UITapGestureRecognizer吞下所有手势

tho*_*max 2 multi-touch uiviewcontroller uiview ios uitapgesturerecognizer

我正在尝试将UITapGestureRecognizer添加到我的应用程序中,以便我可以检测并对所有两个手指点击进行操作,但是通过任何其他用户输入.听起来微不足道,但我无法让它发挥作用.这是我的代码到目前为止,在我的主视图控制器中:

- (void) viewDidLoad {
  // other init stuff
  UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
  [tapRecognizer setNumberOfTouchesRequired:2];
  [tapRecognizer setNumberOfTapsRequired:1];
  [tapRecognizer setCancelsTouchesInView:NO];

  UIView *tapHolderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
  [tapHolderView setMultipleTouchEnabled:YES];
  [tapHolderView addGestureRecognizer:tapRecognizer];

  [self.view addSubview:tapHolderView];

  [tapRecognizer release];
}

- (void) handleTap:(UITapGestureRecognizer *) sender {
  if (sender.state == UIGestureRecognizerStateEnded) {
    // do something
  }
}
Run Code Online (Sandbox Code Playgroud)

会发生什么:双指点按将触发handleTap方法.任何其他用户输入,无论是滑动,捏合,单指点击等,都不会被任何其他视图(UIToolbar,UIWebView等)拾取.

我非常感谢您对此有任何见解,如果我对这个问题不够具体,请告诉我.

Chr*_*ian 6

尝试将视图控制器设置为UIGestureRecognizerDelegate的委托,并实现gestureRecognizer:shouldRecognizeSimulaneouslyWithGestureRecgonizer始终返回"YES".例:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)