ios - WKWebview allowsBackForwardNavigationGestures 和 UINavigationController interactivePopGestureRecognizer 都启用

标签 ios uinavigationcontroller wkwebview

嵌入在导航 Controller 中的我的 View Controller 包含一个 WKWebview,我想在其上启用以下逻辑:

如果 webview 中存在后退项目,做出左屏幕边缘手势应该在 webview 中返回一页(当 allowsBackForwardNavigationGestures 设置为 yes 时 webview 的正常行为)。当没有任何返回项时,它应该在导航 Controller (interactivePopGestureRecognizer)中弹出一页。我同时启用了这两个功能并得到了随机结果,有时我在 web View 中返回一页,有时我在导航堆栈中返回我的主页。我尝试了以下逻辑:

-(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 无法识别的选择器发送到实例。”

有什么地方出错了吗?我猜在哪个手势优先方面存在冲突,但我无法弄清楚在哪里添加此逻辑,以便 web View 和包含其 View Controller 的导航 Controller 和平共处。

最佳答案

_webView.allowsBackForwardNavigationGestures = YES;

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    self.navigationController.interactivePopGestureRecognizer.enabled = _webView.canGoBack ? NO : YES;
}

关于ios - WKWebview allowsBackForwardNavigationGestures 和 UINavigationController interactivePopGestureRecognizer 都启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500308/

相关文章:

ios - 将信息从 UINavigationController 传递到嵌入式 UIViewController

ios - StoryBoard Assistant Editor 停止显示相关文件

ios - 创建自定义 UINavigationcontroller 类

ios - 具有多个循环的 Json 解析

ios - 将数据从detailViewController向后传递到masterViewController

ios - 获取 WKWebView 的当前内存使用情况?

javascript - 无法将文本从 WKWebview 复制到剪贴板

ios - WKWebView:添加加载URL的按钮

ios - 当有足够的空间时,UILabel 自动换行会在下一行添加额外的单词

ios - NSMutableArray 从 viewDidLoad 初始化