5

我想在网页加载后做一些额外的工作,所以我在 webViewDidFinished 中添加了一些代码,但在这种情况下它似乎不起作用。

情况:我使用 UIWebview 访问一个网页,然后单击另一个链接,然后运行

[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 缓存了一定数量的页面,goBackandgoForward方法不保证存储在后向列表中的位置被重新加载。因而不火webViewDidFinishLoad

但即使这可能是正确的行为,我当然同意这是糟糕的 API 设计。绝对应该有一个finishLoad-ish 方法来挂钩后/前进/页内导航。

于 2013-03-27T08:54:13.990 回答