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)
Antwort
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 .
@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
Keine Notwendigkeit. Sie können den Navigationstyp überprüfen. http://StackOverflow.com/a/36436728/2303865 –
@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
Sie müssen zeigen, was Sie erreichen möchten. Fügen Sie einfach dieses Suffix der URL AbsoluteString ist ziemlich einfach –