gpt4 book ai didi

ios - 在 Safari 中打开其他网站的 WKWebView 链接

转载 作者:搜寻专家 更新时间:2023-11-01 05:56:28 24 4
gpt4 key购买 nike

我有一个带有 wkwebview 的应用程序。我需要帮助的是,当用户单击 webview 内的链接时,它会在 Safari 中打开。但是,如果他们单击具有相同域的链接,它会在 WebView 中打开。

例如。如果 webview 打开 apple.com 并且用户单击打开 apple.com/iphone 的链接,我希望它在 webview 中打开。但是,如果他们单击打开 google.com 的链接,我希望它在 Safari 应用程序中打开。你能给我一些代码让我实现吗?

(这是一个使用 swift 3 的 iOS 应用)

最佳答案

在你的 WKNavigationDelegate 中实现 webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)。在那里您可以检查所选链接的主机是否与您初始请求中的主机相同。如果没有,您可以通过 UIApplication.shared.open(url) 打开链接并使用 .cancel 执行决策处理程序 - 因此链接不会加载到您的 Web View 中。否则就允许...

快速和肮脏的版本将是(Swift 4):

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url,
originalHost != url.host, UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
decisionHandler(.cancel)
} else {
decisionHandler(.allow)
}
} else {
decisionHandler(.allow)
}
}

关于ios - 在 Safari 中打开其他网站的 WKWebView 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244355/

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