我目前正在我的应用程序中实现WKWebView,我想使用decisionPolicyFor委托方法来决定我的应用程序如何响应外部链接。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == WKNavigationType.linkActivated && !(navigationAction.request.url?.host?.lowercased().hasPrefix("www.example.com"))! {
UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler:nil)
decisionHandler(.allow)
}
else
{
decisionHandler(.cancel)
}
}
但是编译器在swift 3.0中给出了以下问题: -
实例方法' webView(:decisionPolicyFor:decisionHandler:)'几乎匹配可选要求' webView(:decisionPolicyFor:decisionHandler :)'协议' WKNavigationDelegate'
是否有人知道解决方案,更重要的是为什么会这样?
提前致谢
答案 0 :(得分:3)
如果您在Xcode中发现奇怪的内容,请检查the latest reference。 (有些引用可能不是最新的,但幸运的是,委托方法的描述似乎是最新的。)
<强>声明强>
optional func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
在@escaping
之后添加decisionHandler:
。
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {