Swift 3.0 中的 WKWebView 委托 (decidePolicyFor) 问题

WKWebView Delegate (decidePolicyFor) issues in Swift 3.0

我目前正在我的应用程序中实现 WKWebView,我想使用 decidePolicyFor 委托方法来决定我的应用程序如何响应外部链接。

    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 中给我以下问题:-

Instance method 'webView(:decidePolicyFor:decisionHandler:)' nearly matches optional requirement 'webView(:decidePolicyFor:decisionHandler:)' of protocol 'WKNavigationDelegate'

有没有人知道这个问题的解决方案,更重要的是为什么会这样

提前致谢

当您在 Xcode 中发现异常时,请检查 the latest reference。 (有些参考可能不是最新的,但幸运的是,委托方法的描述似乎是最新的。)

Declaration

optional func webView(_ webView: WKWebView, 
      decidePolicyFor navigationAction: WKNavigationAction, 
      decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

decisionHandler:之后添加@escaping

func webView(_ webView: WKWebView,
             decidePolicyFor navigationAction: WKNavigationAction,
             decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {