gpt4 book ai didi

ios - 停止导航 WKWebview

转载 作者:行者123 更新时间:2023-11-28 05:41:52 28 4
gpt4 key购买 nike

这是我的情况:

我在 WKWebView 中有一个 View Controller 。此 webview 以页面“A”开头。此页面中有一些链接 (href),我希望其中一些链接必须在外部浏览器中打开。

出于这个原因,我设置了 WKWebView 委托(delegate):

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

if let url = webView.url?.absoluteString
{

if(self.isExternalURL(url))
{
let urlT = URL(string: url)!
decisionHandler(.cancel)
UIApplication.shared.open(urlT, options: [:], completionHandler: nil)
}
else
{
decisionHandler(.allow)
}
}
else
{
decisionHandler(.allow)
}
}

private func isExternalURL(url:String) -> Bool
{
//......check link
}

我的问题是,如果我选择一个外部链接,外部浏览器会打开,但 webview 不会保留在页面 A 上,但它也会加载外部链接,而我希望它保留在页面 A 上。

不知道为什么

最佳答案

您应该使用 navigationAction.request.url 而不是 webView.url

  • webView.url - 已经加载的 url
  • navigationAction.request.url - 要加载的新 url

改变

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url?.absoluteString
{
if self.isExternalURL(url)
{
decisionHandler(.cancel)
UIApplication.shared.open(navigationAction.request.url, options: [:], completionHandler: nil)
}
else
{
decisionHandler(.allow)
}
}
else
{
decisionHandler(.allow)
}
}

关于ios - 停止导航 WKWebview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com