WKWebView
是苹果提供的用于在 iOS 应用中显示网页内容的视图组件。allowsBackForwardNavigationGestures
是 WKWebView
的一个属性,用于控制是否允许用户通过手势进行前进和后退导航。
UINavigationController
是 iOS 中用于管理视图控制器栈的容器类,interactivePopGestureRecognizer
是 UINavigationController
的一个属性,用于实现侧滑返回手势。
allowsBackForwardNavigationGestures
:interactivePopGestureRecognizer
:allowsBackForwardNavigationGestures
:true
或 false
。interactivePopGestureRecognizer
:UIGestureRecognizer
类型的属性,可以通过设置其 enabled
属性来启用或禁用侧滑返回手势。allowsBackForwardNavigationGestures
:interactivePopGestureRecognizer
:allowsBackForwardNavigationGestures
和 interactivePopGestureRecognizer
时,侧滑返回手势失效原因:
当 WKWebView
的 allowsBackForwardNavigationGestures
属性启用时,它会接管整个视图的手势识别,导致 UINavigationController
的 interactivePopGestureRecognizer
无法正常工作。
解决方法:
可以通过设置 WKWebView
的 navigationDelegate
来解决这个问题。具体来说,可以在 navigationDelegate
的 webView:decidePolicyForNavigationAction:decisionHandler:
方法中判断当前的导航操作是否是侧滑返回操作,如果是,则禁用 WKWebView
的手势识别。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let gesture = navigationAction.request.url?.absoluteString.contains("特定标识符") {
webView.allowsBackForwardNavigationGestures = false
} else {
webView.allowsBackForwardNavigationGestures = true
}
decisionHandler(.allow)
}
参考链接:
通过上述方法,可以在启用 allowsBackForwardNavigationGestures
的同时,确保 interactivePopGestureRecognizer
正常工作。
没有搜到相关的文章