UIWebView& ShouldStartLoadWithRequest

时间:2011-04-20 02:55:34

标签: cocoa-touch uiwebview nsurlrequest

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

当用户点击链接时,我想拦截请求并根据HREF的内容使用loadHTMLString。

我已经成功解析了网址,但是我对如何告诉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正在填充正确的数据,所以我不知道如何继续。

感谢。

1 个答案:

答案 0 :(得分:3)

听起来您只需要阻止链接的默认操作,如下所示:

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

查看quirksmode了解详情。

修改 重新阅读原始代码,看起来你的循环无限循环。当shouldStartLoadWithRequest点击链接时调用一次,然后在loadHTMLString行上无限调用。以navigationType为条件的调用可以解决您的问题:

- (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;
}