gpt4 book ai didi

iphone - UIWebView shouldStartLoadWithRequest 只调用一次?

转载 作者:技术小花猫 更新时间:2023-10-29 12:14:47 24 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我有一个 UIWebView,我正在其中加载本地 html。一切正常,但现在我希望能够处理本地链接(到脚注):当我点击本地链接时,我希望能够跳转到它引用的脚注,然后能够返回.

<a href="#tofootnote">jump to footnote</a>

我通过将我的代码添加到 shouldStartLoadWithRequest 并拦截本地链接点击来处理这个问题;单击本地链接时,我会施展魔法(隐藏一些 ui 元素、添加后退按钮等);单击后退按钮可使我返回到 html 文档中的原始位置。

问题是在链接上再次单击一次不再调用 shouldStartLoadWithRequest。即,以下代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"foo bar");
return YES;
}

只显示“foo bar”一次(实际上,两次 - 第一次是在我最初加载文档时),但之后只显示一次,无论我点击本地链接多少次

因此,除非有人有更好的解释,否则我猜测 UIWebView 会缓存文档或链接或其他内容,并且在初始调用后不再调用处理程序;如果是这种情况,我该如何清除这个内部缓存? (无需重新加载文档)

最佳答案

我找到的解决这个问题的唯一方法是用字符串替换来自“#anchor”指向被视为 URL 的内容,例如“|anchor”。这样 UIWebView 会认为它是一个真正的链接并在单击时尝试请求。此解决方案显然只有在您自己处理所有点击并因此可以解释更改的 anchor 时才有效。我能理解 UIWebView 行为的原因,但它相当令人沮丧。委托(delegate)确实需要消息来匹配 onclick 等处理程序。

关于iphone - UIWebView shouldStartLoadWithRequest 只调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com