【Obj-C】ダブルタップ(画面を2回タッチ)イベントの設定(イベント) UITapGestureRecognizer

iPhone開発 ダブルタップ(画面を2回タッチ)イベントの設定(イベント) UITapGestureRecognizer ios 逆引き サンプル

iPhone ios objective-c サンプル

iPhone の開発で、ボタンやテーブルビュー以外をダブルタップ時に処理をするイベントを実装する方法です。

UITapGestureRecognizer をインスタンス化します。
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];

タップされた回数を設定します。ダブルタップなので 2 で設定。
doubleTapGesture.numberOfTapsRequired = 2;

Viewへ関連付けします。
[self.view addGestureRecognizer:doubleTapGesture];

以下が、ダブルタップされた時に呼び出されるメソッドになります。上記の selector にて設定をしています。

 
- (void)handleDoubleTap:(UIGestureRecognizer *)sender {
  // ジェスチャーの状態が End の場合のみ処理をしたい場合は、下記の条件分岐処理をしましょう。
  if (sender.state == UIGestureRecognizerStateEnded){
    //ダブルタップされた View から位置を取得します。
    CGPoint tapPoint = [sender locationInView:sender.view];

    //ログに、ダブルタップされた ポジション x の値を表示します。
    NSLog(@"tapPoint x : %f",tapPoint.x);
    
    //ログに、ダブルタップされた ポジション y の値を表示します。
    NSLog(@"tapPoint y : %f",tapPoint.y);
  }
}

また、タップが反応しない場合は
関連付けした View へ
self.view.userInteractionEnabled = YES;
を追加して下さい。

コードサンプル

// ダブルタップ
// Tapping (any number of taps)
// UITapGestureRecognizer
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGesture.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTapGesture];

// セレクター
- (void)handleDoubleTap:(UIGestureRecognizer *)sender {
    if (sender.state == UIGestureRecognizerStateEnded){
        CGPoint tapPoint = [sender locationInView:sender.view];
        
        NSLog(@"tapPoint x : %f",tapPoint.x);
        NSLog(@"tapPoint y : %f",tapPoint.y);
    }
}
タイトルとURLをコピーしました