IPadのiOS8で実行されているWKWebViewアプリがあります(標準のiPad UserAgent: "Mozilla/5.0(iPad; Mac OSXのようなCPUOS 8_1_1)AppleWebKit/600.1.4(GeckoのようなKHTML)バージョン/8.0モバイル/ 12B436Safari/600.1 .4 ")。毎回、ページの読み込みが完了したことを検出するために、考えられるすべてのデリゲートとリスナーを試しました。ここに問題があります:
WKWebViewを開き、Googleにアクセスします。以下が呼び出されます。
_decidePolicyForNavigationAction
_didStartProvisionalNavigation
_ didFinishNavigation
Googleに「YouTube」と入力します。_decidePolicyForNavigationActionのみが呼び出されます。 didStartProvisionalNavigationまたはdidFinishNavigationはありません
Google内のYouTubeをクリックします。以下が呼び出されます。
_didStartProvisionalNavigation
_decidePolicyForNavigationAction
_ didFinishNavigation
これから、YouTube内何も呼ばれません。 YouTubeビデオをクリックし、didStartProvisionalNavigationまたはdidFinishNavigationはクリックしません。また、webview.loadingオブザーバーは呼び出されなくなりました。 decidePolicyForNavigationActionでさえ、たまにしか呼び出されません。ただし…webView.backForwardList.currentItemはクリックするたびに更新されるため、ページの読み込みが何らかの理由で終了したことを検出している必要がありますか?
この動作は、他の多くのサイト(Vimeoなど)でも発生します。このタイプのサイトがメインフレームを毎回更新しているわけではないことは知っていますが、読み込みが現在の状態でWKWebViewの「制限」を開始/終了したことを検出する機能がないのでしょうか。
私が達成したいのは、ナビゲーションがいつ完了したかを検出する別の方法がありますかJava YouTube/VimeoなどのモバイルWebサイト内:
助けてくれてありがとう。
ページが読み込まれたときに正確に何をしたいかはわかりませんが、これらのプロパティを観察することが役立つことを願っています。
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)