【Swift入門】UIScrollViewで垂直方向のスワイプを検出する方法
はじめに
UIScrollViewには、スクロールやスワイプの方向を直接取得できるネイティブなAPIが用意されていません。そのため、UIScrollView上でのスワイプ操作を検出するには、UISwipeGestureRecognizerなどのジェスチャレコグナイザーを組み合わせる工夫が必要になります。
本記事では、具体例を交えながら、SwiftでScrollViewの垂直方向(上方向)スワイプを検出する手順をわかりやすく解説します。
1. プロジェクトの準備
まず、Xcodeで空のプロジェクトを作成し、要件に応じてStoryboard上のビューへUIScrollViewを配置します。続いて、Auto Layoutの制約(Constraint)を適切に設定しておきましょう。
2. スワイプジェスチャレコグナイザーの追加
オブジェクトライブラリから「Swipe Gesture Recognizer」をドラッグ&ドロップし、ScrollViewのすぐ上に配置します。
次に、追加したジェスチャレコグナイザーを選択し、アトリビュートインスペクタを開きます。「Swipe」の項目で方向を指定できるので、「Up」を選択してください。
これにより、ジェスチャレコグナイザーは上方向へのスワイプのみを認識するようになります。
3. スワイプ検出用メソッドの作成
続いて、スワイプイベントを受け取るためのアクションメソッドを作成します。
@IBAction func swipeMade(_ sender: UISwipeGestureRecognizer) {
if sender.direction == .up {
print("up swipe made")
// ここで任意の処理を実行します
}
}このコードでは、ジェスチャレコグナイザーが発生したイベントをこのメソッドへ送信し、スワイプの方向が「上」だった場合にifブロック内の処理が実行されます。画面遷移やアニメーションなど、目的に合わせた処理を自由に記述できます。
実行結果
デバイス上でアプリを実行し、実際にスワイプ操作を行うと、コンソールには以下のような出力が表示されます。

補足:複数方向のスワイプを検出したい場合
下方向や左右方向のスワイプも検出したい場合は、方向ごとにSwipe Gesture Recognizerを追加し、directionプロパティで判定を分岐させましょう。また、Storyboardを使わず、コードからジェスチャレコグナイザーを生成することも可能です。
let swipeUp = UISwipeGestureRecognizer(target: self,
action: #selector(swipeMade(_:)))
swipeUp.direction = .up
scrollView.addGestureRecognizer(swipeUp)このように、UIScrollView単体では取得できないスワイプ方向の情報も、UISwipeGestureRecognizerを活用することで簡単に検出できます。ぜひ自身のアプリ開発に役立ててください。
-
【Android】レイアウトを垂直方向にスクロールさせるには?ScrollViewの使い方を解説
垂直ScrollView(スクロールビュー)とは 実装例に入る前に、まず「垂直ScrollView」とは何かを理解しておきましょう。垂直ScrollViewは android.widget.ScrollView クラスによって提供されるUIコンポーネントで、子ビューを垂直方向(上下)にスクロールさせるために使用されます。画面に収まりきらないコンテンツを表示したい場合に非常に便利です。 本記事では、Android Studioを使って垂直ScrollViewを実装し、複数の画像を上下にスクロールできるレイアウトを作成する手順を紹介します。 実装手順 ステップ1:新しいプロジェクトを作成する
-
【Android開発】ScrollViewのスクロール終了(最下部・最上部への到達)を検出する方法
この記事では、Androidアプリ開発においてScrollViewのスクロール終了、つまりユーザーがコンテンツの最下部までスクロールしたことを検出する方法を、実際のコード例とともに分かりやすく解説します。「記事を最後まで読んだらポイントを付与したい」「無限スクロールで次のページを読み込みたい」など、スクロール位置の検出はさまざまな場面で活用できるテクニックです。今回は OnScrollChangedListener を使って、最下部だけでなく最上部への到達も同時に検出する実装方法を紹介します。全体の流れ今回作成するアプリは、ScrollView内にWebViewを配置し、長いテキストデータを表