【问题标题】:Using UITapGestureRecognizer to show/hide menus使用 UITapGestureRecognizer 显示/隐藏菜单
【发布时间】:2010-07-31 21:11:08
【问题描述】:

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

tapRecognizer.cancelsTouchesInView = NO;

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

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

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

:-乔

【问题讨论】:

    标签: objective-c ipad uibutton uigesturerecognizer ibooks


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      从委托方法返回 NO 手势识别器:应该接收触摸: 如果 touch.view 是您的按钮之一。

      【讨论】:

      • 太棒了,感谢您分享您的解决方案!我遇到了完全相同的问题。
      猜你喜欢
      • 2015-03-30
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多