webViewDidFinishLoad()似乎没有在Swift中运行

我有一个用于webview的视图控制器,通过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(for keyPath: KeyPath) { print("DEBUG 4") } 

在日志中没有调用任何调试。

这些是UIWebView委托方法,但是从KINWebBrowser页面你可能应该使用KINWebBrowserDelegate协议

  • (void)webBrowser:(KINWebBrowserViewController *)webBrowser didStartLoadingURL:(NSURL *)URL;
  • (void)webBrowser:(KINWebBrowserViewController *)webBrowser didFinishLoadingURL:(NSURL *)URL;
  • (void)webBrowser:(KINWebBrowserViewController *)webBrowser didFailToLoadURL:(NSURL *)URL withError:(NSError *)error;