ios - UIPanGestureRecognizer 冲突

标签 ios uigesturerecognizer slidingmenu uipangesturerecognizer

我正在将 UIPanGestureRecognizer 添加到我的 View Controller 中的一个自定义 View 。

我还使用 MFSideMenu 作为滑动菜单,在其框架中将 UIPanGestureRecognizer 添加到主 NavigationViewController.view。

有时,当我在我的自定义 View 中平移时,平移实际上发生在 MavigationViewController.view 中。

导致这个问题的是MFSideMenu实现中的如下代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

  if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {

     if([gestureRecognizer.view isEqual:self.rootViewController.view] &&
       [self rootViewControllerPanEnabled])
      {
        return YES;
      }

   return NO;
  }

}

有时(5-10 中有 1 次),此方法会返回 YES,而在平移 View 本身时应该返回 NO!

问题是滑动菜单没有平移自定义 View ,而是打开了。

我几乎已经尝试了所有我能想到的 - 这种行为根本没有任何意义。

更新:仅在 iOS 7 中出现问题 - 请参阅下面我的修复答案。

最佳答案

找到了解决方案;显然问题出在 iOS 7 中。

要修复它,只需在 View Controller 中实现 UIGestureRecognizerDelegate 并实现:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

这解决了我的随机问题!

归功于 UIPanGestureRecognizer sometimes not working on iOS 7

关于ios - UIPanGestureRecognizer 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192510/

相关文章:

iOS sqlite3 - 如果文件在 sqlite3_open 之后发生变化怎么办

ios - 通过 iPhone 中的应用程序调用号码

ios - 使用 Transform 旋转时调整 UIView 的大小

android - 在上下文操作栏中,如何通过使选项卡不可点击/滑动来禁用滑动选项卡?

Javascript Youtube mp4 下载到 ios

ios - 检测 iPhone 6 及 plus

iphone - UILongPressGestureRecognizer 停止 handle 而不停止触摸

ios - 丢失的手势 iPad 横向

android - 为Android项目添加依赖

Android SlidingMenu库安装