UINavigationController中的UIWebView是否允许识别iOS 7刷卡到弹出内置手势?

zek*_*kel 2 uiwebview uinavigationcontroller uigesturerecognizer ios ios7

我希望普通的UINavigationController刷卡回弹手势可以在基本上是UIWebView浏览器的视图控制器上工作.默认情况下,UIWebView似乎不允许UINavigationController识别滑动手势.

如果我设置UIWebView.delegate为我的视图控制器,并添加以下方法,它将UINavigationController's正确识别反向滑动.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但在完成该手势(弹出UIWebView's视图控制器)后,当我做另一个手势时,它会崩溃.(下面的堆栈跟踪.)并且通过"其他手势",我的意思是简单地滚动UIWebView浏览滑动后弹出的视图控制器.

总是YES返回值的问题是弄乱了UIWebView手势的正常交互吗?似乎我只想让导航手势始终为YES,但我希望webview手势能够正常执行任何操作,但我不能只是打电话[super gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]来获取该行为.坦率地说,我很惊讶UIWebView委托正在被发送手势回调.

Thread 1, Queue : com.apple.main-thread
#0  0x3a80cb66 in objc_msgSend ()
#1  0x32e23f9a in -[UIGestureRecognizer _delegateCanPreventGestureRecognizer:] ()
#2  0x32cce418 in -[UIGestureRecognizer _isExcludedByGesture:] ()
#3  0x32c9410e in _UIGestureRecognizerUpdate ()
#4  0x32ccd1b4 in -[UIWindow _sendGesturesForEvent:] ()
#5  0x32cccb62 in -[UIWindow sendEvent:] ()
#6  0x32ca1f58 in -[UIApplication sendEvent:] ()
#7  0x32ca0746 in _UIApplicationHandleEventQueue ()
#8  0x304e2f26 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#9  0x304e23ee in __CFRunLoopDoSources0 ()
#10 0x304e0bde in __CFRunLoopRun ()
#11 0x3044b540 in CFRunLoopRunSpecific ()
#12 0x3044b322 in CFRunLoopRunInMode ()
#13 0x351822ea in GSEventRunModal ()
#14 0x32d021e4 in UIApplicationMain ()
#15 0x000df478 in main at /path/to/main.m:17
#16 0x000df398 in start ()
Run Code Online (Sandbox Code Playgroud)

m8l*_*abs 5

我只是面临同样的问题(但我有常规的UIViewController - MWPhotoBrowser - 由于某种原因也阻止了这个系统后退手势)我通过设置解决了它

self.navigationController.interactivePopGestureRecognizer.delegate = nil;
Run Code Online (Sandbox Code Playgroud)

viewWillDisappear:处理程序.希望能帮助到你.