2016-04-09 14 views
0

Ich frage mich, wie ich UIWebView ableiten könnte, um jeden Link, den der Benutzer anlegt, mit einem String am Ende wie "= Human" anzuhängen. Um es klar zu sagen, wenn der Benutzer zu Yahoo.com geht und dann auf einen Link klickt, hat er am Ende noch den "= Human".Unterklasse UIWebView zum Anhängen jedes Links (in Swift)

+0

Keine Notwendigkeit. Sie können den Navigationstyp überprüfen. http://StackOverflow.com/a/36436728/2303865 –

+0

@LeoDabus Aber das überprüft nur mit einem bool. Gibt es eine Methode, die ich aufrufen und die gewünschte URL (wie die angehängte) zurückgeben kann. – jordanbana

+0

Sie müssen zeigen, was Sie erreichen möchten. Fügen Sie einfach dieses Suffix der URL AbsoluteString ist ziemlich einfach –

Antwort

0

konnte ich UIWebView

Unterklasse Aber die docs sagen:

A WK Objekt WebView zeigt interaktive Web-Inhalte, wie zum Beispiel für einen In-App-Browser.

Für neue Entwicklung, verwenden Sie diese Klasse anstelle der älteren Klasse UI WebView .

Dies funktioniert für mich:

import UIKit 
import WebKit 

class WebViewController: UIViewController, 
         WKNavigationDelegate { 

    var webView: WKWebView! 

    override func loadView() { 

     let webView = WKWebView() 
     webView.navigationDelegate = self 
     view = webView 

     let defaultUrl = NSURL(
      string: "https://www.yahoo.com" 
     ) 

     if let validDefaultUrl = defaultUrl { 
      let yahooRequest = NSURLRequest(URL: validDefaultUrl) 
      webView.loadRequest(yahooRequest) 
     } 

    } 

    //MARK: - WKNavigationDelegate methods: 

    func webView(webView: WKWebView, 
     decidePolicyForNavigationAction navigationAction: WKNavigationAction, 
     decisionHandler: (WKNavigationActionPolicy) -> Void) 
    { 
     print("[me]: In WKWebView delegate method") 

     if navigationAction.navigationType == .LinkActivated { 
      print("[me]: User clicked on a link.") 

      let request = navigationAction.request 

      if let url = request.URL, 
        newURL = NSURL(string: url.absoluteString + "=User") 
      { 
       print("[me]: New url is valid.") 
       print("[me]: New url is \(newURL.absoluteString)") 

       let newRequest = NSMutableURLRequest(URL: newURL) 
       decisionHandler(.Cancel) 
       webView.loadRequest(newRequest) 
      } 

     } 

     decisionHandler(.Allow) 
    } 

} 

Edit: Eigentlich wird der Code nicht geben Sie die if navigationAction.navigationType == .LinkActivated Block jedes Mal, wenn ein Link aus irgendeinem Grund angeklickt wird. Manchmal sehe ich nur die Ausgabe:

[me]: In WKWebView Delegatmethode

und ich nicht die Ausgabe sehen:

[me]: User auf einen Link geklickt .

+0

@LeoDabus, Ich bin ein iOS-Anfänger und ich habe diesen Code zusammen von mysellf zusammengestöpselt, indem ich nur auf die Apple Docs und mein BNR IOS Buch schaute. Ich würde gerne wissen, warum es nicht funktioniert. – 7stud