Ich habe eine Swift
iOS-App mit dem einzigen Zweck, eine Website mit Hilfe von WKWebView anzuzeigen.WKWebView Links funktioniert nicht
Dies funktioniert gut, aber das Drücken auf Links (z. B. auf einer [mailto:]
Schaltfläche) funktioniert nicht, weil es nichts öffnen kann!
Hat jemand eine Lösung dafür?
Ich habe viel über das Lösen dieses gelesen, aber ich weiß nicht, wo ich anfangen soll.
Danke für die Hilfe
[UPDATE:]
Der folgende Code zeigt die Lösung
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
@IBOutlet var containerView : UIView! = nil
var webView: WKWebView?
override func loadView() {
super.loadView()
self.webView = WKWebView()
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
webView?.navigationDelegate = self
let url = NSURL(string:"https://google.de")
let req = NSURLRequest (URL: url!)
self.webView!.loadRequest(req)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func prefersStatusBarHidden() -> Bool {
return true
}
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
let url = navigationAction.request.URL?.absoluteString
let url_elements = url!.componentsSeparatedByString(":")
switch url_elements[0] {
case "mailto":
openCustomApp("mailto://", additional_info: url_elements[1])
decisionHandler(.Cancel)
default:
}
decisionHandler(.Allow)
}
func openCustomApp(urlScheme:String, additional_info:String){
if let requestUrl:NSURL = NSURL(string:"\(urlScheme)"+"\(additional_info)") {
let application:UIApplication = UIApplication.sharedApplication()
if application.canOpenURL(requestUrl) {
application.openURL(requestUrl)
}
}
}
}
Sieht gut aus. Haben Sie die decidePolicyForNavigationAction debuggt? Die URL zum Beispiel? Im Grunde brauchen Sie nur mailto: //[email protected] – OhadM
Sie haben gerade das Problem gelöst. Die Antwort unten ist der richtige Weg und der obige Code zeigt die Lösungen. Mein einziges Problem war, dass der mailto: link nicht richtig formatiert wurde! Danke an euch alle –