2016-12-20 7 views
0

私はwkwebviewを持つアプリを持っています。私が助けが必要なのは、ユーザーがwebview内のリンクをクリックすると、Safariで開きます。しかし、同じドメインのリンクをクリックすると、webviewで開きます。Safariの他のウェブサイトのWKWebViewリンクを開く

たとえば、 webviewがapple.comを開き、ユーザーがapple.com/iphoneを開くリンクをクリックすると、webview内で開くことができます。しかし、google.comを開くリンクをクリックすると、Safariアプリでそのリンクを開くことができます。私はこれを実装できるように私にいくつかのコードを教えてもらえますか?

(これは迅速な3を使用したiOSアプリである)

答えて

0

あなたWKNavigationDelegatewebView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)を実装します。そこでは、選択したリンクのホストが最初のリクエストのように同じかどうかを確認できます。そうでない場合は、UIApplication.shared.open(url)でリンクを開き、.cancelで決定ハンドラを実行します。リンクはWebビューにロードされません。許可そうでなければただ...

クイックと汚いのバージョンは(スウィフト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) 
    } 
} 
関連する問題