[iPhone] アプリでタップや長押しを認識させるには

Photo by Yura Fresh on Unsplash

タップ操作はスマホアプリの便利な機能です。UIGestureRecognizer ではタップ、スワイプ(フリック)等々を扱えますが、まず手っ取り早くタップを扱うUITapGestureRecognizerと、長押しのUILongPressGestureRecognizerの使い方を見てみたいと思います。

Swift 5.1
Xcode 11.3.1

UIGestureRecognizer

SwiftUIでのタップ、長押しは以下を参照してください

Viewのタップや長押しを認識してアクションを起こす機能が Modifiers の onTapGesture, onLongPressG…

UIGestureRecognizerには2タイプあり、1度だけ認知するものUITapGestureRecognizerと、連続して認知するものUILongPressGestureRecognizerがあります。例えばLongPressを認知した指がある一定以上の時間同じ場所にあることが条件です。もし移動した場合、LongPressはキャンセルされます。


UITapGesture

タップを認識する為に、UITapGestureRecognizer を使ってインスタンスを生成します。


View に インスタンスを追加します


selector でタップされたときに呼びだされるメソッドを登録

タップされた時に、メソッドが呼び出されます


実際のコードです、Delegate をセットします。

ViewController.swift


実際にタップして「タップ」のログが出てくれば成功です。

UILongPressGesture

storyboardにUILabelを置いて、紐付けします。


UILongPressGestureRecognizerを同様に設定すればできあがりです。

ViewController.swift


TapとLong Pressを表示するようにしてみます。
タップと長押しがそれぞれ認識されたでしょうか

 

References:
UIGestureRecognizer — UIKit | Apple Developer Documentation
UITapGestureRecognizer — UIKit | Apple Developer Documentation
UILongPressGestureRecognizer — UIKit | Apple Developer …