5

Webページが読み込まれた後に追加の作業を行いたいので、webViewDidFinishedにコードを追加しましたが、この状況では機能していないようです。

状況:UIWebview を使用して Web ページにアクセスし、別のページへのリンクをクリックした後、実行します。

[webview goback];

ページがキャッシュから読み込まれたようですが、

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

と呼ばれ、

- (void)webViewDidFinishLoad:(UIWebView *)webView;

は呼び出されません。

4

2 に答える 2

5

真実。履歴スタックへの変更について通知を受ける方法はまだあります。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(webViewHistoryDidChange:)
                                             name:@"WebHistoryItemChangedNotification"
                                           object:nil];

これUIWebViewはKVOに準拠していないcanGoBackため、潜在的な戻るボタンを有効/無効にする唯一の方法のようです。

于 2013-04-05T08:05:06.287 に答える
1

どんなに奇妙でも、これは正しい動作だと思います。アップルのドキュメントから:

webViewDidFinishLoad:

Web ビューがフレームの読み込みを完了した後に送信されます。

私の予想では、UIWebView は一定数のページをキャッシュし、メソッドgoBackgoForwardメソッドは、バックフォワード リストに格納された場所が再ロードされることを保証しません。したがって、発火しませんwebViewDidFinishLoad

しかし、これは正しい動作かもしれませんが、これが悪い API 設計であることには確かに同意します。finishLoad戻る/進む/ページ内ナビゲーションのためにフックする -ish メソッドが確実にあるはずです。

于 2013-03-27T08:54:13.990 に答える