habe ich eine Klasse mit dem Namen JSBridge
, diese Klasse implementiert die WKNavigationDelegate
, ich habe einige benutzerdefinierte Sachen in der Protokollverfahren, und dann eine andere UIViewController
nennen s Standard WKNavigationDelegate
zum Beispiel WebViewController
aka webViewDelegate
, so ich habe wie dieseswift 3 WKWebView Delegierte WKNavigationDelegate Mehrdeutige Methode
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)
}
}
mein Problem ist in xcode8 (swift3) der Compiler gibt mir den Fehler zu tun: Ambiguous use of 'webView(_:decidePolicyFor:decisionHandler:)'
, sie haben den gleichen Namen
Es funktioniert! Vielen Dank. – Ethan