使用UITapGestureRecognizer显示/隐藏菜单

时间:2010-07-31 21:11:08

标签: objective-c ipad uibutton uigesturerecognizer ibooks

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

tapRecognizer.cancelsTouchesInView = NO;

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

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

非常感谢您提前给予我任何帮助!

: - 乔

2 个答案:

答案 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是你的按钮之一。