1

tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)]; tapGesture.numberOfTapsRequired = 2; tapGesture.numberOfTouchesRequired = 1;

[self.view addGestureRecognizer:tapGesture];
[tapGesture release];

- (void)handleTapGesture:(UITapGestureRecognizer *)sender {

     if (sender.state == UIGestureRecognizerStateRecognized) {
  // handling code
        NSLog(@"We got double tap here");
        DashBoardViewController*   dashboardObj = [[DashBoardViewController alloc] initWithNibName:@"DashBoardViewController" bundle:nil];
        [self.navigationController pushViewController:dashboardObj animated:YES];
 }

私がやろうとしているのは、シングルタップとダブルタップで2つの異なるイベントを呼び出したいということです。では、tap==1 と tap==2 を検出するにはどうすればよいでしょうか? 私のコードではダブルタップが認識されますが、シングルタップが見つかった場合の検索方法と動作方法がわかりません。

ありがとう

4

2 に答える 2

2

これはuasolnを与えるかもしれません

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];

[doubleTap setNumberOfTapsRequired:2];
[singleTap setNumberOfTouchesRequired:1];

[self.view addGestureRecognizer:singleTap];
[self.view addGestureRecognizer:doubleTap];

- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {
// single tap action
}

- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer {
   // double tap action
}

または、シングルタッチを検証するためにダレンが指摘したようにNSTimerを使用する必要があります。

この方法では、

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
于 2013-03-15T05:15:51.730 に答える
0

以下は、iOSのタッチに関する良い投稿のようです。

http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/

于 2013-03-15T05:12:55.910 に答える