swift - Swift 3.0 中的 WKWebView Delegate (decidePolicyFor) 问题

标签 swift wkwebview

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

    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 . (一些引用资料可能不是最新的,但幸运的是,委托(delegate)方法的描述似乎是最新的。)

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) {

关于swift - Swift 3.0 中的 WKWebView Delegate (decidePolicyFor) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327702/

相关文章:

ios - 在 iOS 中,如何读取源自 WKWebView 的 NSURLRequest 中的多部分表单数据?

macos - MacOS 中的 WebView : How to request file system permissions correctly

ios - Swift Today Extension preferredContentSize 不调整大小

swift - WatchOS 2 不从 iPhone AppDelegate 读取 NSData

javascript - 下载在 WKWebView 中加载的嵌入式 PDF

ios - 如何为WKWebView设置代理?

Swift Playground WebView 不会显示本 map 片

swift - 如何在执行 navigationLink 之前执行操作

ios - 在表格单元格中动态设置标签值

swift - 在 swift 框架中测试内部类