2017-06-29 2 views
0

In meiner App öffne ich eine URL mit WK WebView. Die URL wird korrekt geladen. Wenn ich jedoch auf einige externe Links in der geladenen URL klicke, wird sie nicht an andere Websites weitergeleitet.UI WebView und WK WebView Navigation

Zum Beispiel

Nach meiner URL ist https://www.urlaubstracker.de

In dem obigen Link werden verschiedene Urlaubsangebote zu externen Webseiten verlinkt ist. Wenn ich auf eine Schaltfläche klicke, die den Nutzer auf eine andere Website weiterleitet, funktioniert die App nicht oder lädt die URL.

Ich habe versucht mit UI WebView und es funktioniert einwandfrei. Kann jemand bitte darauf hinweisen, was genau ich hier in meinem WK WebView vermisse?

+0

Http-Schalter verwendet, ist kein Problem hier, wie in meiner app in info.plist habe ich schon getan „App Transport Security Settings - Erlaubt Arbitrary Loads auf JA ". –

+0

NSExceptionAllowsInsecureHTTPLoads = YES hinzufügen kann es Ihnen helfen.check meine Antwort https://stackoverflow.com/a/44795602/3937664 –

Antwort

0
  1. Aktivieren Sie zuerst ATS in Ihrer App.

  2. Jetzt versuchen Sie bitte mit diesem Code.

    var webView: WKWebView?

    Überschreibung func viewDidLoad() { super.viewDidLoad()

    let webViewConfiguration = WKWebViewConfiguration() 
    webView = WKWebView(frame: view.bounds, configuration: webViewConfiguration) 
    let url = URL(string: "https://www.urlaubstracker.de") 
    let req = NSURLRequest(url: url!) 
    self.webView!.load(req as URLRequest) 
    self.webView?.navigationDelegate = self 
    webView?.navigationDelegate = self 
    webView?.allowsBackForwardNavigationGestures = true 
    webView?.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    view.addSubview(webView!) 
    

    }

    func webView (_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: (@escaping (WKNavigationActionPolicy) - > Void)) { print ("webView: (webView) decidePolicyForNavigationAction: (navigationAction) decisionHandler: (decisionHandler)")

    switch navigationAction.navigationType { 
    case .linkActivated: 
        if navigationAction.targetFrame == nil { 
         webView.load(navigationAction.request) 
        } 
    default: 
        break 
    } 
    
    decisionHandler(.allow) 
    

    }

+0

@Waleed Asif, ich hatte versucht, so und es funktioniert gut. –

+0

Ich habe genau Ihren Code verwendet, aber es funktioniert nicht. Es lädt die URL korrekt, aber wenn ich auf den Link klicke, der eine andere Webseite öffnen soll, passiert nichts und das ist mein Problem. Mit UI Webview funktioniert es nicht gut mit WK Web-Ansicht, die ich gerne verwenden würde, wie es von Apple empfohlen wird. Könnten Sie bitte hier helfen? –

+0

Könnten Sie mir bitte helfen, dasselbe zu replizieren? Ich habe Ihre Website mit Webkit geladen. Nun, wo soll ich klicken? –