我试图让使用斯威夫特和WKWebviews打开,有一个链接我的混合iOS应用程序target="_blank",或者如果URL中包含http://,https://或mailto:在移动Safari浏览器。
target="_blank"
http://
https://
mailto:
从这个答案我得到了这段代码。
func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! { if navigationAction.targetFrame == nil { webView.loadRequest(navigationAction.request) } return nil }
首先,那对我没有任何帮助。其次,我希望它在新窗口中打开。我发现该代码应该执行类似的操作…
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.sharedApplication().openURL(requestUrl) }
如何将这两部分放在一起并使它们工作?我需要添加什么到ViewController声明中才能使其工作?
针对iOS 10 Swift 3的代码已更新:
override func loadView() { super.loadView() self.webView.navigationDelegate = self self.webView.uiDelegate = self //must have this } func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { if navigationAction.targetFrame == nil, let url = navigationAction.request.url { if url.description.lowercased().range(of: "http://") != nil || url.description.lowercased().range(of: "https://") != nil || url.description.lowercased().range(of: "mailto:") != nil { UIApplication.shared.openURL(url) } } return nil }