5

次のコードで WebView を初期化します。

self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
self.webView.delegate =self;
[self.view addSubview:self.webView];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];

その後、WebView に Web ページを読み込みます。たとえば、stackoverflow を検索します。

ボタンを押して goBack を呼び出すよりも

[self.webView goBack];

このデリゲート メソッドは、毎回呼び出されるわけではありません。

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

非常に高速に読み込まれるため、 goBack 関数はキャッシュからページを読み込むと思います。

iOS バージョン 6.1 で発生します。

デリゲートが常に呼び出されるように、誰かが私を助けることができますか?

更新: shouldStartLoadWithRequest:navigationType: delegate メソッドを使用して、履歴のバック URL を取得します。

4

2 に答える 2

1

Web ビューの goBack デリゲート メソッド 前の場所を逆順リストに読み込みます。あなたが想定したように、キャッシュからページを直接ロードします。戻るたびにWebビューを更新する必要があると予想される場合は、その機能を次のようにカスタマイズする必要があります。(例: デリゲート メソッドまたは機能実装を手動で呼び出して、戻った後に同じページをリロードします)。

- (IBAction)goBackAction:(UIButton *)sender {

    [self.webView goBack];
    [self webView:self.webView shouldStartLoadWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.stackoverflow.com"]] navigationType:UIWebViewNavigationTypeOther];
}
于 2013-09-10T10:00:43.717 に答える