我目前正在我的应用程序中实现 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/