iOSアプリでドラッグを扱う方法

タッチスクリーンだから、指でドラッグしてもらいたくなります。そんな時に、どうやって実装するかを説明します。

Pan Gesture Recognizerを使います

自分で、タッチを検知して、動いたかどうか判断して・・・・みたいなことはしなくて良いようになってます。
具体的には、UIPanGestureRecognizerというクラスが用意されていて、このクラスをドラッグを検知したいViewControllerに配置すると、ドラッグした時に指定した関数を読んでくれます。

配置?

Storyboardを開いている時に、Libraryから、”Pan”で探してもらって、希望するViewController上にドロップすると、配置できます。
PanGestureRecognizer

関数の指定方法

ボタンのアクションと一緒です。ViewControllerの隣に、PanGestureRecognizerが配置されているので、それを右クリックし、プルダウンメニューの”Sent action”を、IBActionで定義した関数と接続します。
こうすることで、ドラッグされた時に指定した関数が呼び出されます。(ちなみに、ドラッグと似ていますが、タップで呼び出して欲しい時には、TapGestureRecognizerを使う必要があります。)

関数の中での処理サンプル

ドラッグ開始なのか、移動中なのか、ドラッグし終わったのかについては、stateとして受け取ることができます。

注意点
ビュー上で何か操作された時に関数が呼び出されるのではなく、「ドラッグしたか」・「タップしたか」が自動的に判別されて呼び出されます。つまり、OS側でドラッグやタップを判断することで、アプリごとに判定が違う等の不整合を防いでくれるようになってます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です