2016-05-27 12 views
0

Ich habe UITextField und UIWebView wie folgt aus: enter image description hereGet URL geklickt Link innerhalb von UIWebView Swift verwenden 2

Aber wenn ich einen Link innerhalb webview geklickt haben, das Textfeld oben nicht zu geklickt URL ändern.

Ich versuche, mit:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let scheme = request.URL! 
    print(scheme) 
} 

und diese:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    if navigationType == .LinkClicked { 
     print(request.URL.path) 
    } 
    return true 
} 

und diese:

textfield.text = webview.request.URL.absoluteString 

aber es hat nicht request.URL.path und webview.request bekommen. URL.absoluteString.

Wie kann texfield.text von webview auf angeklickte URL geändert werden?

Antwort

0

Wenn Sie iOS 8 und höher verwenden, verwenden Sie WKWebView anstelle von UIWebView. Von Apple:

In Anwendungen, die in iOS laufen 8 und höher, verwenden Sie die WKWebView Klasse statt UIWebView zu verwenden. Ziehen Sie darüber hinaus in Betracht, die WKPreferences-Eigenschaft javaScriptEnabled auf false zu setzen, wenn Sie Dateien rendern, die kein JavaScript ausführen sollen.

Der kleine Ärgernis ist, dass WKWebView gezogen werden kann und über Interface Builder fallen gelassen, so dass Sie es zu Ihrer Ansicht im Code hinzufügen müssen. Hier ist der Navigationsteil:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.webView.navigationDelegate = self 
} 

func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { 
    self.addressField.text = webView.URL!.absoluteString 
} 
+0

Das Problem ist, ich verwende Storyboard nicht programmgesteuert – Crocodile

Verwandte Themen