【发布时间】:2016-09-23 10:19:56
【问题描述】:
我创建了一个名为JSBridge的类,这个类实现了WKNavigationDelegate,我在协议方法中做了一些自定义的东西,然后调用另一个UIViewController的默认WKNavigationDelegate,例如WebViewController aka webViewDelegate,所以我必须这样做
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
guard let webViewDelegate = webViewDelegate , self.webView == webView else {
decisionHandler(.allow)
return
}
//do something here then call `WebViewController`'s implementation
if webViewDelegate.responds(to: #selector(webViewDelegate.webView(_:decidePolicyFor:decisionHandler:))) {
webViewDelegate.webView!(webView, decidePolicyFor: navigationAction, decisionHandler: decisionHandler)
} else {
decisionHandler(.allow)
}
}
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
guard let webViewDelegate = webViewDelegate , self.webView == webView else {
decisionHandler(.allow)
return
}
//do something here then
if webViewDelegate.responds(to: #selector(webViewDelegate.webView(_:decidePolicyFor:decisionHandler:))) {
webViewDelegate.webView!(webView, decidePolicyFor: navigationResponse, decisionHandler: decisionHandler)
} else {
decisionHandler(.allow)
}
}
我的问题在 xcode8(swift3) 中,编译器给了我错误:
Ambiguous use of 'webView(_:decidePolicyFor:decisionHandler:)',它们与编译器同名
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
【问题讨论】: