iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOSで長押し(ロングプレス)を検出する方法|SwiftとUILongPressGestureRecognizerの使い方

iOSにおける長押しジェスチャーとは?

長押し(ロングプレス)ジェスチャーとは、1本以上の指が画面に一定時間触れ続けていることを検出する操作です。このジェスチャーを認識するには、UILongPressGestureRecognizerを使用します。

開発者は以下の2つの条件を設定できます。

  • ジェスチャーとして認識されるまでの最短押下時間
  • 画面に触れている必要がある指の本数

なお、ジェスチャーは「タッチの継続時間」によってのみトリガーされ、タップの強さ(圧力)には反応しない点に注意してください。

長押しジェスチャーの典型的な活用例としては、押されているオブジェクトに対してアクションを実行する場面が挙げられます。例えば、コンテキストメニュー(文脈依存メニュー)の表示などが代表的です。

より詳細な仕様については、Apple公式ドキュメント「Handling Long-Press Gestures」をご参照ください。

本記事では、ボタンを一定時間長押しするとアラートを表示するシンプルなiOSアプリを作成しながら、実装手順を解説していきます。それでは始めましょう。

実装手順:長押しでアラートを表示するアプリを作る

ステップ1:プロジェクトの作成

Xcodeを起動し、「New Project」→「Single View Application」を選択して、プロジェクト名を「LongPressGesture」として新規作成します。

ステップ2:ボタンの配置とIBOutletの接続

Main.storyboard上にボタンを1つ配置し、ViewControllerに@IBOutletとして接続します。名前は「btnLongOutlet」としてください。

ステップ3:UILongPressGestureRecognizerオブジェクトの宣言

次に、ViewController.swiftを開き、UILongPressGestureRecognizerのオブジェクトを宣言します。

var longgesture = UILongPressGestureRecognizer

ステップ4:viewDidLoad()への設定コード追加

viewDidLoad()内に、以下のコードを追記します。

longgesture = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPress(_:)))
longgesture.minimumPressDuration = 2
btnLongOutlet.addGestureRecognizer(longgesture)

ここではminimumPressDuration = 2と設定しているため、2秒間の長押しがジェスチャー認識の条件となります。この値を変更すれば、必要な押下時間を調整できます。

ステップ5:longPress関数の作成

続いて、ジェスチャー検出時に呼び出される関数「longPress」を作成し、以下のコードを記述します。

@objc func longPress(_ sender: UILongPressGestureRecognizer) {
    let alertController = UIAlertController(title: "Long Press", message:
        "Long Press Gesture Detected", preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    present(alertController, animated: true, completion: nil)
}

この関数では、長押しが検出された際に「Long Press Gesture Detected」というメッセージを含むアラートコントローラーを表示しています。

ステップ6:アプリの実行と動作確認

以上で実装は完了です。アプリをビルドして実行し、ボタンを2秒間押し続けてください。正しく長押しが検出されると、アラートが表示されます。

iOSで長押し(ロングプレス)を検出する方法|SwiftとUILongPressGestureRecognizerの使い方

まとめ

UILongPressGestureRecognizerを使えば、わずか数行のコードで長押しジェスチャーを簡単に検出できます。minimumPressDurationプロパティで認識時間を自由に制御できるため、コンテキストメニューや削除確認など、さまざまなUIパターンに応用できます。ぜひ自身のアプリにも取り入れてみてください。

  1. iOS 15からiOS 14.6へダウングレードする方法|ベータ版をやめて安定版に戻す完全ガイド

    iOS 15からiOS 14へのダウングレード方法 最新機能をいち早く試すにはベータ版が便利ですが、日常使用では必ずしも快適に動作するとは限りません。勢いでiOS 15にアップグレードしたものの、後悔している方もいるのではないでしょうか。この記事では、安定版であるiOS 14.6に戻す方法を詳しく解説します。 最も簡単な方法:ベータプロファイルの削除 iOS 14.6にダウングレードする最も簡単な方法は、iOS 15のベータプロファイルを削除し、次の正式アップデートを待つことです。手順は以下の通りです。 iPhoneの「設定」を開き、「一般」をタップします。 「プロファイルとデバイス管理」

  2. iOS 12のインストール方法|GM版・IPSWファイルを使った2つの手順を解説

    Appleは、待ち望まれていたiOS 12のリリース日を9月17日と発表しました。しかし、正式リリースまで待ちたくない方には、今すぐiOS 12のゴールドマスター(GM)版をインストールする方法があります。そのためには「Apple Beta Software Program」に参加し、お使いのデバイスを登録する必要があります。 正式版のiOS 12は約1週間後に一般公開される予定で、「スクリーンタイム」「Memoji」「Siriショートカット」、改善された通知機能など、多数の新機能が利用できるようになります。 ポイント:iOS 12は、古い機種から新しい機種まで、あらゆるiPhoneの応答速度