我已經構建了一個Swift
iOS應用程序,其唯一目的是通過WKWebView來顯示網站。WKWebView鏈接不工作
這工作正常,但按鏈接(例如在[mailto:]
按鈕)不起作用,因爲它不能打開任何東西!
有沒有人有解決方案?
我已經讀了很多關於解決這個問題,但我不知道從哪裏開始。
感謝您的幫助
[UPDATE:]
下面的代碼示出了溶液
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)
}
}
}
}
看起來很好。你調試了DecisionPolicyForNavigationAction嗎?例如的網址? 基本上你只需要mailto://[email protected] – OhadM
你剛剛解決了這個問題。下面的答案是正確的做法,上面的代碼顯示瞭解決方案。我唯一的問題是,mailto:鏈接格式不正確!感謝大家 –