iPhone:如何在UITextView中显示来自UIWebView HTML文档的文本

时间:2010-03-15 10:32:11

标签: iphone rss uiwebview uitextview

我有一个RSS源,它被安排在UITableView中,让用户可以选择在UIWebView中加载的故事。但是,我想停止使用UIWebView,只使用UITextView或UILabel。

这是我想要做的事情(只显示新闻报道的各种文字方面):

alt text http://img411.imageshack.us/img411/2449/screenshot20100315at120.png

我尝试过使用:

NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];

并将字符串分配给UILabel,但它在我webViewDidFinishLoad中实现它的地方不起作用( - 这不是正确的地方吗?)。我得到一个空白的textView和普通的webView。

如果我自己在UIWebView上叠加UITextView(即只加载一页的webView),上面发布的代码就会显示文本。当我尝试处理RSS提要时出现问题。

我一直想知道为什么现在这几天不起作用。如果您有更好,更有效的方法,然后将代码放在webViewDidFinishLoad中,请告诉我们!它是否属于我的didSelectRowAtIndexPath?

非常感谢你!

3 个答案:

答案 0 :(得分:1)

我认为你应该首先记录返回的字符串:

NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];

...在RSS提要的情况下,以确保您收到回报。 RSS页面可能没有相同的javascript组件,并且它返回一个空字符串。

一旦你确认了这一点,那么在文本视图中正确显示它就变得很简单了。

答案 1 :(得分:0)

如果要显示的NSString不为空,请尝试在webViewDidFinishLoad方法中执行以下操作:

[yourUILabel performSelectorOnMainThread:@selector(setText:) withObject:[NSString stringWithFormat:@"bla bla %@", @"more bla"] waitUntilDone:YES];

iphone应用程序的主要线程负责绘制组件,这就是您的标签不显示文本的原因。

您也可以尝试将setNeedsDisplay:设置为true

此外,UILabel不会保留HTML格式。它会将其显示为文本。

答案 2 :(得分:0)

您可以尝试以下方法:

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML;"];

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];

NSString *htmlContent = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText;"];

您使用最后一行代码丢失了格式化信息。