0

我已将点击手势识别器添加到视图中。我的视图底部有一个图像和一个 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;
}
4

2 回答 2

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

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

于 2011-01-27T20:03:03.010 回答
0

按钮是第一响应者,它们的 uitouchup 或其他事件将首先触发,并且不会传播到后台视图。

您可以对按钮进行子类化并让 touchesbegan/moved/ended 执行以下操作:

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

让您的后台视图为他们处理所有事件,在这种情况下,您的手势代码应该可以工作。

于 2011-01-27T20:04:06.873 回答