WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用
Posted
技术标签:
【中文标题】WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用【英文标题】:WKWebview navigation response method isn't getting called upon clicking done button in a webview 【发布时间】:2019-04-29 00:56:55 【问题描述】:我正在为我的 Swift 应用程序使用 WKWebview
。出于某种原因,当用户单击WKWebView
中的完成按钮时,不会调用WKWebview
导航响应委托方法。当我在网络上尝试相同的操作时,它会重定向到正确的 url。
到目前为止,我已经尝试在 viewDidLoad
中配置 WKWebView
之前清除 WKWebview
缓存,或者如果我收到内存警告。此外,确保我的info.plist
允许任意加载,NSExceptionAllowsInsecureHTTPLoads
用于测试目的。尽管尝试了这些东西来调试,导航响应委托方法仍然没有被调用。
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
if let webviewUrl = webView.url
let urlString = webviewUrl.absoluteString
if urlString.contains("\(myUrlComponents)")
self.navigationController?.popViewController(animated: true)
decisionHandler(.cancel)
return
decisionHandler(.allow)
我希望能够在调用导航响应方法时检测到特定的WKWebview
url 并返回上一个屏幕。
【问题讨论】:
什么“完成按钮”?导航涉及链接,而不是按钮。 我知道。我的网页视图中有一个完成按钮。按下完成按钮后,页面将重定向到不同的 url。通常在发生这种情况时会调用导航响应,并且我可以检查新的 url。但是,问题是当页面重定向到新 url 时导航响应没有被调用。 您确定它正在重定向到新页面吗?而不是用 javascript 重写当前页面的内容? “按下完成按钮后,页面将重定向到不同的 url。” 如何? @ZevEisenberg 我对网络不太熟悉。我会问网络开发者是否是后者。 【参考方案1】:我想您会发现,如果您使用的委托函数看起来与您正在使用的函数相同,除了“decisionHandler”是一个以 WKNavigationActionPolicy 作为其参数的函数之外,它将被调用。
【讨论】:
以上是关于WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用的主要内容,如果未能解决你的问题,请参考以下文章