2017-11-02 1 views
0

schrieb ich eine einfache Anwendung, die eine Webansicht nennt (unter XXXXXX.com/webview.phpSwift: Öffnen Sie alle externen Links innerhalb einer Webansicht in Safari, NICHT in webview

Dies ist mein Code, der in meinem webview eröffnet swift. Jetzt

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

alle interne Links, die innerhalb dieses Webview-System (zB /webview_subsite2.php) innerhalb dieser webview Eröffnung das ist wunderbar aber ich möchte, dass alle externe Links (Ziel. = _blank) im Safari-Browser öffnen Wie kann ich das erreichen?

Meine vorherige Frage wurde als doppelt markiert, aber es ist nicht. Der Punkt ist, dass der oben gepostete Code NICHT der Aufruf eines Links ist! Es ist der Aufruf der Webansicht. Meine Frage betrifft, wie man alle externen Verbindungen innerhalb dieses webview öffnet, das bei XXXXXX.com/webview.php (Gebiet zensiert) in Safari und NICHT innerhalb dieses webview-Rahmens gelegen ist. Und eine Lösung in swift ist notwendig.

Antwort

0

Verwendung shouldStartLoadWithRequest webView Delegatmethode und navigationType.linkClicked Typ prüfen und den Link in Safari öffnen

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

Lässt sich sagen: Der Quellcode der Webansicht xxxxx.com/webview.php lautet: google und ich möchte diesen Link zu Google in Safari öffnen. – newcoder

+0

wo kopieren Sie diese Funktion? – Amjad

+0

Fügen Sie diese Methode hinzu, in der Sie Ihren Webview-Delegaten festlegen – suhit

0

Sie webView:decidePolicyForNavigationAction:decisionHandler: auf Ihrem WKNavigationDelegate implementieren können. Geben Sie WKNavigationActionPolicyAllow an den Beendigungshandler für URLs zurück, die Ihrer "internen" Domäne entsprechen, und WKNavigationActionPolicyCancel für diejenigen, die dies nicht tun, und auch die URLs, die in Safari geladen werden sollen.

Verwandte Themen