我在视图中添加了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;
}
答案 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];
让你的支持视图处理他们所有的事件,在这种情况下你的手势代码应该有效。