我有一个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?
非常感谢你!
答案 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;"];
您使用最后一行代码丢失了格式化信息。