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); } }