你如何阻止UITapGestureRecognizer捕获每一个?

时间:2011-02-03 11:43:51

标签: iphone objective-c button conflict uigesturerecognizer

您好我有一个opengl视图,我有一个标签栏。我正在使用点击识别器来点击屏幕上的不同3D对象。在标签栏中我有一个按钮,但它不起作用,因为水龙头识别器也捕获了这些水龙头。我怎么阻止这个?我已经尝试过了:


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
  if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE;
  return TRUE;
}

我认为我在某种程度上比较错误的classess,因为当我调试它时总是返回TRUE。

2 个答案:

答案 0 :(得分:32)

或者你可以[singleTap setCancelsTouchesInView:NO]。示例:

UITapGestureRecognizer *singleTap = [
    [UITapGestureRecognizer alloc]
    initWithTarget: self
    action: @selector(yourSelector:)
];
[singleTap setCancelsTouchesInView:NO];
[[self view] addGestureRecognizer: singleTap];

答案 1 :(得分:27)

  if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE;

这就是我开始工作的方式。 superview是一个UIToolbar,毕竟可能UIBarButtonIttem is a view