2017-11-02 10 views
0

に、私はこれが私の中でのWebViewを開き、私のコードですXXXXXX.com/webview.phpスウィフト:、SafariでのWebView内のすべての外部リンクを開いていないのWebView

にあるのWebViewを呼び出すシンプルなアプリを(書きましたSWIFT:今

if let url = URL(string: "https://www.XXXXXX.com/webview.php") { 
    let request = URLRequest(url: url) 
    webView.loadRequest(request) 
} 

は、このWebViewのシステム(例えば/webview_subsite2.php)内にあるすべての内部リンクこのWebViewの中に開いているが厥素晴らしい しかし、私がしたいことすべての外部リンク(ターゲット。 = _blank) Safariブラウザで開きます。 どうしたらいいですか?

私の以前の質問は重複としてマークされましたが、それはisntです。 ポイントは、上記の投稿されたコードはリンクの呼び出しではないことです! これはwebviewの呼び出しです。 私の質問は、すべての外部リンクを開く方法に関連していますこのwebviewは、SafariのXXXXXX.com/webview.php(ドメインは検閲済み)にあり、このwebview-Frame内にはありません。迅速なソリューションが必要です。あなたのWKNavigationDelegateにwebView:decidePolicyForNavigationAction:decisionHandler:を実装することができます

答えて

0

使用shouldStartLoadWithRequest WebViewのデリゲートメソッドとnavigationType.linkClickedタイプをチェックして、Safariでリンクを開く

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    if navigationType == UIWebViewNavigationType.linkClicked { 
     if #available(iOS 10.0, *) { 
      UIApplication.shared.open(request.url!, options: [:]) 
     } else { 
      UIApplication.shared.openURL(url) 
     } 
     return false 
    } 
    return true 
} 
+0

webview xxxxx.com/webview.phpのソースコードはgoogleです。私はこのリンクをSafariでGoogleに公開したいと考えています。 – newcoder

+0

この機能はどこにコピーしますか? – Amjad

+0

このメソッドを追加して、Webviewデリゲートを設定します – suhit

0

WKNavigationActionPolicyAllowを「内部」ドメインに一致するURLの補完ハンドラに返し、そうでない場合はWKNavigationActionPolicyCancelを返し、Safariで読み込むURLも処理します。

関連する問題