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