检测WKWebView何时完成加载

我有一个运行在iPad上的iOS8上的WKWebView应用程序(标准iPad UserAgent:“Mozilla / 5.0(iPad;像OS X的CPU OS 8_1_1)AppleWebKit / 600.1.4(KHTML,如Gecko)Version / 8.0 Mobile / 12B436 Safari / 600.1 0.4" )。 我已经尝试了所有可以考虑的代表和听众,以便每次检测页面何时完成加载。 这是问题:

  1. 打开你的WKWebView并去Google。 以下称为:

    _decidePolicyForNavigationAction _didStartProvisionalNavigation _ didFinishNavigation 
  2. 在Google中input“YouTube”:仅调用_decidePolicyForNavigationAction。 没有didStartProvisionalNavigation或didFinishNavigation

  3. 在Google中点击YouTube。 以下称为:

     _didStartProvisionalNavigation _decidePolicyForNavigationAction _ didFinishNavigation 
  4. 从现在起,在YouTube内没有任何东西被称为 。 点击一个YouTubevideo,并没有didStartProvisionalNavigation或didFinishNavigation。 另外,webview.loading观察者不再被调用。 即使决定PolicyForNavigationAction只是偶尔被调用。 但是,每次点击后, webView.backForwardList.currentItem更新,所以这必须检测何时页面加载完成?

这种行为也发生在很多其他网站上(例如Vimeo)。 我知道这种types的站点并不是每次都更新主框架,但是这种缺乏检测加载何时开始/完成WKWebView当前状态的“限制”的能力?

我想要实现的是:有没有另外一种方法来检测导航在YouTube / Vimeo等Java移动网站中每次都完成导航:

  • 使用NSURLProtocol或类似的?
  • 或者也许一种方法来检测webView.backForwardList.currentItem更新?

谢谢你的帮助。

我不确定当页面加载时你想要做什么,但希望观察这些属性可以帮助你:

 webView.addObserver(self, forKeyPath: "estimatedProgress", options: .New, context: nil) webView.addObserver(self, forKeyPath: "loading", options: .New, context: nil) webView.addObserver(self, forKeyPath: "title", options: .New, context: nil) webView.addObserver(self, forKeyPath: "canGoBack", options: .New, context: nil) webView.addObserver(self, forKeyPath: "canGoForward", options: .New, context: nil)