从缓存中goBack后不调用UIWebView shouldStartLoadWithRequest

zei*_*sen 5 caching uiwebview ios

我使用以下代码初始化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"]]];
Run Code Online (Sandbox Code Playgroud)

然后我在WebView中加载一个网页.例如,搜索stackoverflow.

比我点击按钮调用goBack

[self.webView goBack];
Run Code Online (Sandbox Code Playgroud)

每次都不会调用此委托方法.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Run Code Online (Sandbox Code Playgroud)

我假设,goBack函数从缓存加载页面,因为它加载速度非常快.

发生在iOS版本6.1上.

任何人都可以帮助我,代表将永远被召唤?

更新:我使用shouldStartLoadWithRequest:navigationType:delegate方法获取历史记录返回的URL.

use*_*119 3

更好的方法是监听 webHistory 更改通知来检测 goBack/goForward 操作。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(webViewHistoryDidChange:)
                                             name:@"WebHistoryItemChangedNotification"
                                           object:nil];
Run Code Online (Sandbox Code Playgroud)