我正试图找到一种方法来点击显示/隐藏我的菜单,就像iBooks一样。我设置了UITapGestureRecognizer来执行此操作,但不幸的是,这意味着屏幕上的所有按钮都不起作用。我知道我可以使用
tapRecognizer.cancelsTouchesInView = NO;
为了让触摸能够通过,但当然,这两件事都发生了,我无法取消菜单显示/隐藏。
有没有办法阻止UITapGestureRecognizer在某些按钮或动作上发生?或者是否有更好的方法来做到这一点?
非常感谢您提前给予我任何帮助!
: - 乔
答案 0 :(得分:5)
如果有人需要一些代码来理解Joe的解决方案,那么首先应该实现UIGestureRecognizerDelegate协议(即@interface YourViewController : UIViewController <UIGestureRecognizerDelegate>
)。
在实现UIGestureRecognizerDelegate协议的类中,您必须实现- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
。在那里,你可以检查touch.view是否是一个按钮。在我的实现中,我只使用了return !([touch.view isKindOfClass:[UIButton class]]);
,但如果你有其他触控功能,你可能需要扩展它,你不想触发你的点击识别器。
答案 1 :(得分:3)
我已经解决了(或其他人为我解决了)所以我想我会与你分享:
从委托方法返回NO gestureRecognizer:shouldReceiveTouch: 如果touch.view是你的按钮之一。