取消在iPhone中的UIBar按钮上点击手势

时间:2011-01-27 19:15:05

标签: iphone uibarbuttonitem uigesturerecognizer

我在视图中添加了Tap Gesture识别器。我的视图底部有一个图像和一个UIToolBar,有一些UIBarbuttons我想取消这些按钮上的任何触摸。我试图使用以下方法取消触摸。如何检测工具栏上的触摸或任何条形按钮?还没有为条形按钮定义框架......

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {


    if (gestureRecognizer == tapRecognizer) {
  if (touch.view==barbutton/*toolbar or bar button item*/) 
   {
   return NO;   
  }

    }
    return YES;
}

2 个答案:

答案 0 :(得分:1)

CGPoint location = [touch locationInView:self.view];
if(CGRectContainsPoint(toolbar.frame, location)) { ... }

这假设工具栏和self.view位于相同的坐标空间中。如果没有,你将不得不使用UIView的坐标转换方法(convertPoint:toView:)来使空格匹配。

答案 1 :(得分:0)

按钮是第一个响应者,他们的uitouchup或其他事件将首先触发,不会传播到支持视图。

您可以对按钮进行子类化并使touchesbegan / moving / ends执行:

[self.nextResponder touchesBegan:touches withEvent:event];

让你的支持视图处理他们所有的事件,在这种情况下你的手势代码应该有效。