在webview裡面限制超連結點擊時必開新瀏覽器safari閱讀
必須在webview class 裡面引用 WKNavigationDelegate
原本方法是這樣
即可對內嵌在app的瀏覽器每次點擊連結時開safari瀏覽
來源
https://stackoverflow.com/questions/37509990/migrating-from-uiwebview-to-wkwebview
必須在webview class 裡面引用 WKNavigationDelegate
原本方法是這樣
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
<#code#>
}
修改其方法
//MARK: - WKNavigationDelegate
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
var action: WKNavigationActionPolicy?
//return前一定會執行的方法
defer {
decisionHandler(action ?? .allow)
}
//get webview的url
guard let url = navigationAction.request.url else { return }
//如果是超連結,網址前綴是https,就新開safari視窗,其他照常
if navigationAction.navigationType == .linkActivated, url.absoluteString.hasPrefix("https://") {
action = .cancel // Stop in WebView
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
即可對內嵌在app的瀏覽器每次點擊連結時開safari瀏覽
來源
https://stackoverflow.com/questions/37509990/migrating-from-uiwebview-to-wkwebview
留言
張貼留言