2011-04-20 50 views
0

我已经设置了一个使用UIWebView的应用程序。 UIWebView用于显示用CSS格式化的文本。在文本中是链接(a href = ...)。 href的格式如下:tags.tagnameUIWebView&ShouldStartLoadWithRequest

当用户点击一个链接时,我想拦截请求并使用基于HREF内容的loadHTMLString。

我已经成功解析了URL,但是我不知道如何告诉webview无法加载请求的href并加载我想要的字符串。

我已经试过内ShouldStartLoadWithRequest如下:

genHTML=[self genTagPage:parsedString]; // a string declared earlier 
[self.noteHTML loadHTMLString:genHTML baseURL:nil]; 
return NO; 

但在执行代码时,我收到以下错误:

2011-04-19 22:39:21.088 TestApp[27026:207] *** -[_PFArray release]: message sent to deallocated instance 0xaa3cf40 

GENHTML是越来越填入正确的数据,所以我不知道如何继续。

谢谢。

回答

3

这听起来像你只需要以防止类似下面的链接默认动作:

<a href="somewhere.html" onClick="doSomething(); return false"> 

退房quirksmode了解更多详情。

编辑: 重新读您的原始代码,它似乎你有一个无限循环继续。当点击链接时,shouldStartLoadWithRequest被调用一次,然后在你的loadHTMLString行上无限次地调用它。以导航类型为条件调用应该可以解决您的问题:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if(navigationType==UIWebViewNavigationTypeLinkClicked) 
    { 
     genHTML=[self genTagPage:parsedString]; // a string declared earlier 
     [self.noteHTML loadHTMLString:genHTML baseURL:nil]; 
     return NO; 
    } 
    return YES; 
} 
+0

不需要。我需要点击才能发生,并且IOS会触发一个事件。这样,我知道链接已被点击,然后我可以解析链接要求的内容并计算并显示所需的信息。我只是不想让原来的链接加载 - 它不会 - 没有什么。它是真正需要的描述符。 – Chris 2011-04-20 14:14:08

+0

@Chris检查我的更新答案,我认为应该把你排除在外。 – Sam 2011-04-21 00:54:16

+0

谢谢!我无法解决如何正确处理导航类型,这个例子帮助我解决了我所处的无限循环。 – 2015-04-16 16:31:45