使用UITapGestureRecognizer显示/隐藏菜单

jow*_*wie 3 objective-c uibutton ipad uigesturerecognizer ibooks

我试图找到一种很好的方式来点击显示/隐藏我的菜单,就像iBooks一样.我设置了UITapGestureRecognizer来执行此操作,但不幸的是,这意味着屏幕上的所有按钮都不起作用.我知道我可以使用

tapRecognizer.cancelsTouchesInView = NO;
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢您提供的任何帮助!

:-Joe

The*_*ter 5

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

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