【发布时间】:2016-07-21 09:29:53
【问题描述】:
嵌入在导航控制器中的我的视图控制器包含一个 WKWebview,我想在其上启用以下逻辑:
如果 webview 中存在后退项目,则做出左屏幕边缘手势应该在 webview 中返回一页(当 allowBackForwardNavigationGestures 设置为 yes 时,webview 的正常行为)。当没有任何返回项时,它应该在导航控制器中弹出一页(interactivePopGestureRecognizer)。我启用了这两个,我得到随机结果,有时我会在 web 视图中返回一页,有时我会返回导航堆栈中的主页。我尝试了以下逻辑:
-(void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation {
if (webView.backForwardList.backItem) {
MYappDelegate.mainNavigationController.interactivePopGestureRecognizer.enabled = NO;
self.webView.allowsBackForwardNavigationGestures = YES;
} else {
MYappDelegate.mainNavigationController.interactivePopGestureRecognizer.enabled = YES;
self.webView.allowsBackForwardNavigationGestures = NO;
}
}
但是当我滑动时它会崩溃并且我得到“WKCompositingView unrecognized selector sent to instance”。
任何想法我哪里出错了?我猜有关于哪个手势优先的冲突,但我不知道在哪里添加这个逻辑,所以 webview 和包含其视图控制器的导航控制器都可以和平地生活。
【问题讨论】:
-
对于更高的 iOS 版本,导航手势似乎覆盖了 wkwebview 之一,因此 webview 交互应该始终为真,如果用户在第一页上,只需禁用导航手势即可。
标签: ios uinavigationcontroller wkwebview