【问题标题】:iPhone: How to Display Text from UIWebView HTML Document in a UITextViewiPhone:如何在 UITextView 中显示 UIWebView HTML 文档中的文本
【发布时间】:2010-03-15 10:32:10
【问题描述】:

我有一个 RSS 提要,它被安排在 UITableView 中,它允许用户选择加载到 UIWebView 中的故事。但是,我想停止使用 UIWebView,而只使用 UITextView 或 UILabel。

这个 png 是我想要做的(只显示新闻故事的各个文本方面):

我尝试过使用:

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

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

如果我将 UITextView 单独覆盖在 UIWebView 之上(即,只加载一个页面的 webView),上面发布的代码可以正常显示文本。当我尝试处理 RSS 提要时出现问题。

我一直想知道为什么这几天不能正常工作。如果您有更好、更有效的方法,然后将代码放在webViewDidFinishLoad,请告诉我!它会进入我的didSelectRowAtIndexPath?

非常感谢您!

【问题讨论】:

  • “将 RSS 提要添加到组合中时会出现什么问题”?当我们无法清楚地了解问题所在时,很难提出建议。显示 RSS 的 textview 是空白还是什么?
  • 编辑时我很困惑,当您尝试显示 RSS 内容时,您会得到一个空白文本视图。对吗?

标签: iphone rss uiwebview uitextview


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    如果你要显示的 NSString 不为空,尝试在 webViewDidFinishLoad 方法中做这样的事情:

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

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

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

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

    【讨论】:

    • 嗨,索林,感谢您的回复。我在 webViewDidFinishLoad 中实现了它,但我想因为我不习惯使用 NSStrings,所以我把它搞砸了。字符串的格式是什么(即 stringWithFormat 后面是什么?)例如,这是一个示例 RSS 提要:tinyurl.com/rssexample 谢谢你的帮助!
    • 就像 TechZen 所说,我指出您应该首先查看您要显示的 NSString 是否不是空的。关于 NSString 类,您可以在此处阅读:developer.apple.com/iphone/library/documentation/Cocoa/…。 NSString *myString = [NSString stringWithFormat:@"%@", 参数];其中参数可以是另一个 NSString 对象或@“我有一只猫”。 stringWithFormat 后面的 %@ 表示参数内容的占位符,在本例中为 NSString。对于浮点数,如果我没记错的话,你可以使用 %f,%d = 整数等等
    • 我查看了 xml。那里有标题、描述、新闻网址、缩略图网址。您要做的第一件事是异步下载在 xml 的链接标记中指定的地址处找到的网页。然后尝试以某种方式解析它...... UILabel 将显示所有文本,包括 html 标签,如果您将直接显示文本而不进行任何解析。
    【解决方案3】:

    您可以尝试以下方法:

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

    最后一行代码丢失了格式信息。

    【讨论】:

      猜你喜欢
      • 2012-10-10
      • 2021-09-30
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多