iFu*_*ger 1 safari webview ios swift wkwebview
我有一个带有wkwebview的应用程序。我需要帮助的是,当用户单击Web视图内的链接时,它会在Safari中打开。但是,如果他们单击具有相同域的链接,则会在Web视图中打开该链接。
例如。如果Webview打开apple.com,并且用户单击打开apple.com/iphone的链接,我希望它在Webview内部打开。但是,如果他们单击打开google.com的链接,我希望它在野生动物园应用程序中打开。您能给我一些代码以便我实现吗?
(这是使用Swift 3的iOS应用)
在您的WKNavigationDelegate
工具中webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
。您可以在此处检查所选链接的主机是否与初始请求中的主机相同。否则,您将通过打开链接UIApplication.shared.open(url)
并使用.cancel
- 执行决策处理程序,因此该链接不会加载到您的Web视图中。否则就允许...
快速而肮脏的版本是(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)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1334 次 |
最近记录: |