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 中加载了一个网页。例如搜索stackoverflow。

比我按下一个按钮调用 goBack

[self.webView goBack];

并非每次都调用此委托方法。

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

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

发生在 iOS 版本 6.1 上。

任何人都可以帮助我,代表总是会被召唤吗?

更新:我使用 shouldStartLoadWithRequest:navigationType: 委托方法来获取历史记录返回 URL。

4

2 回答 2

3

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

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(webViewHistoryDidChange:)
                                             name:@"WebHistoryItemChangedNotification"
                                           object:nil];
于 2013-10-16T09:18:38.067 回答
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 回答