我有一个用于网络视图的视图控制器,通过设置KIN浏览器 https://github.com/dfmuir/KINWebBrowser.
我尝试了多种方法来执行这些方法:
func webViewDidStartLoad(webView: UIWebView) {
print("Strat Loading")
}
func webViewDidFinishLoad(webView: UIWebView) {
print("Finish Loading")
}
func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
print(error?.localizedDescription)
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return true
}
override func webViewDidFinishLoad(_ webView: UIWebView) {
super.webViewDidFinishLoad(webView)
print("Finish Loading 2")
}
但似乎没有任何效果。
我的类定义看起来很正常:class WebBrowserViewController: KINWebBrowserViewController, NavigationProtocol {
但无论我做什么 - 是否覆盖 func,我在这些函数中放入的记录器或打印语句似乎都不会被执行。
我究竟做错了什么?我正在尝试创建一个事件,该事件将在加载所有 Web 内容时侦听,以便我可以停止出现加载微调器。
编辑:添加代表信息:
当我尝试向 viewDidLoad() 添加委托时:
webView.delegate = self
我收到以下错误:
Ambiguous reference to member 'webView(_:decidePolicyFor:decisionHandler:)'
这是我的 viewDidLoad() ,没有委托设置:
override func viewDidLoad() {
super.viewDidLoad()
pointsNavigationItem = addPointsButtonToNavigation()
self.showsURLInNavigationBar = false
self.showsPageTitleInNavigationBar = false;
self.tintColor = UIColor.navText
self.barTintColor = .navBackground
}
我不确定 KinWebBrowser 是否以同样的方式进行委托?
添加了KINWebBrowserDelegate
到类定义并添加以下方法:
func webBrowser(_ webBrowser: KINWebBrowserViewController!, didFailToLoad URL: URL!, error: Error!) {
print("DEBUG 5")
}
func webBrowserViewControllerWillDismiss(_ viewController: KINWebBrowserViewController!) {
print("DEBUG 1")
}
func webBrowser(_ webBrowser: KINWebBrowserViewController!, didStartLoading URL: URL!) {
print("DEBUG 2")
}
func webBrowser(_ webBrowser: KINWebBrowserViewController!, didFinishLoading URL: URL!) {
print("DEBUG 3")
}
func didChangeValue<Value>(for keyPath: KeyPath<WebBrowserViewController, Value>) {
print("DEBUG 4")
}
日志中没有调用任何调试。