jes*_*ang 4 uiwebview ios uiwebviewdelegate
我想在加载网页后做一些额外的工作,所以我在webViewDidFinished中添加了一些代码,但似乎在这种情况下它不起作用.
情况:我访问了一个带有UIWebview的网页,然后点击一个链接到另一个,之后,我运行
[webview goback];
Run Code Online (Sandbox Code Playgroud)
似乎页面仅从缓存加载
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
Run Code Online (Sandbox Code Playgroud)
叫做,
- (void)webViewDidFinishLoad:(UIWebView *)webView;
Run Code Online (Sandbox Code Playgroud)
不叫.
真正.还有一种方法可以了解历史堆栈的变化:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(webViewHistoryDidChange:)
name:@"WebHistoryItemChangedNotification"
object:nil];
Run Code Online (Sandbox Code Playgroud)
由于UIWebView不符合KVO,canGoBack这似乎是启用/禁用潜在后退按钮的唯一方法.
不管多么奇怪,我怀疑这是正确的行为。来自苹果文档:
webViewDidFinishLoad:
Web 视图完成加载框架后发送。
我敢打赌,UIWebView 缓存一定数量的页面,并且goBack和goForward方法不能保证存储在后退列表中的位置被重新加载。因而不火webViewDidFinishLoad。
但即使这可能是正确的行为,我也肯定同意这是糟糕的 API 设计。肯定应该有一个finishLoad-ish 方法来挂钩后退/前进/页内导航。
| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |