【发布时间】:2009-12-03 14:48:35
【问题描述】:
在我的 iPhone 应用程序中,我有一个 UIWebView,我在其中加载本地 html。一切正常,但现在我希望能够处理本地链接(到脚注):当我点击本地链接时,我希望能够跳转到它引用的脚注,然后能够回来.
<a href="#tofootnote">jump to footnote</a>
我通过将代码添加到 shouldStartLoadWithRequest 并拦截本地链接点击来处理此问题;单击本地链接时,我会施展魔法(隐藏一些 ui 元素,添加后退按钮等);单击后退按钮会将我跳回到 html 文档中的原始位置。
问题是在链接上单击 ONCE AGAIN 不再调用 shouldStartLoadWithRequest。即以下代码:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"foo bar");
return YES;
}
只显示一次“foo bar”(实际上是两次——我最初加载文档时的第一次),但之后只显示一次,无论我点击本地链接多少次
所以,除非有人有更好的解释,否则我猜测 UIWebView 缓存了文档或链接或其他内容,并且在初始调用后不再调用处理程序;如果是这种情况,我该如何清除这个内部缓存? (无需重新加载文档)
【问题讨论】:
-
附言。我正在使用 loadHTMLString 加载 UIWebView(因为我需要设置 baseURL),所以我无法为原始加载请求设置缓存策略。
-
实际上,即使使用 urlrequest 和缓存策略仍然不起作用。请帮帮我!