3

我正在尝试找到一种让点击显示/隐藏我的菜单的好方法,就像 iBooks 一样。我设置了 UITapGestureRecognizer 来执行此操作,但不幸的是,这意味着屏幕上的任何按钮都不起作用。我知道我可以使用

tapRecognizer.cancelsTouchesInView = NO;

为了让触摸通过,但是当然,这两件事都会发生,我无法取消菜单显示/隐藏。

我有没有办法阻止 UITapGestureRecognizer 在某些按钮或操作上发生?或者一般来说有没有更好的方法来做到这一点?

非常感谢您能给我的任何帮助!

:-乔

4

2 回答 2

5

如果有人需要一些代码来理解 Joe 的解决方案,您应该首先实现 UIGestureRecognizerDelegate 协议(即@interface YourViewController : UIViewController <UIGestureRecognizerDelegate>)。

在实现 UIGestureRecognizerDelegate 协议的类中,您必须实现- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch. 在那里,您可以检查 touch.view 是否是一个按钮。在我的实现中,我只使用了一个return !([touch.view isKindOfClass:[UIButton class]]);,但如果您有其他支持触摸的组件不想触发您的点击识别器,您可能需要扩展它。

于 2010-10-22T16:22:57.003 回答
3

我已经解决了它(或其他人为我解决了它)所以我想我会与你分享:

如果 touch.view 是您的按钮之一,则从委托方法 gestureRecognizer:shouldReceiveTouch: 返回 NO。

于 2010-08-01T09:05:27.597 回答