良い例を見つけました:stackoverflow link
これは、クラスにジェスチャ認識エンジンを実装する方法に関する段階的なガイドです。
クラスをUIGestureRecognizerDelegate
プロトコルに準拠させます。
ジェスチャ レコグナイザをインスタンス化します。たとえば、 a をインスタンス化する
には、次のUITapGestureRecognizer
ようにします。
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
ここで、action はジェスチャーを処理するセレクターです。ここで、セレクターの handleTapFrom は次のようになります。
- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
{
//Code to handle the gesture
}
セレクターへの引数は、ジェスチャ レコグナイザーです。このジェスチャ認識エンジンを使用して、そのプロパティにアクセスできます。たとえば、、、などのジェスチャ認識エンジンの状態を見つけることができ
UIGestureRecognizerStateBegan
ますUIGestureRecognizerStateEnded
。
インスタンス化されたジェスチャ レコグナイザで必要なプロパティを設定します。たとえば、 の場合UITapGestureRecognizer
、プロパティ
numberOfTapsRequired
、およびを設定できnumberOfTouchesRequired
ます。
ジェスチャを検出するビューにジェスチャ レコグナイザーを追加します。サンプル コード (参照用にそのコードを共有します) では、次のコード行を使用してジェスチャ レコグナイザーを imageView に追加します。
[self.imageView addGestureRecognizer:tapGestureRecognizer];
ジェスチャ レコグナイザをビューに追加した後、ジェスチャ レコグナイザのデリゲート、つまりすべてのジェスチャ レコグナイザを処理するクラスを設定します。サンプル コードでは、次のようになります。
tapGestureRecognizer.delegate = self;
注: ジェスチャ レコグナイザーをビューに追加した後、デリゲートを割り当てます。それ以外の場合、アクション メソッドは呼び出されません。