从UITextView获取属性html字符串

时间:2014-07-26 11:34:26

标签: ios objective-c nsattributedstring

我使用下面给出的代码在文本视图中添加属性文本

NSString *string=[NSString stringWithFormat:@"<img src=\"%@\">",sticker.image_url];
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[string dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
self.textView.attributedText=attrStr;

textview包含文字testing <img src="www.google.com">

上面的代码在文本视图中显示图像。但现在问题是我想获得字符串,需要做更多的工作。这就是为什么当我尝试使用下面给出的代码从文本视图中获取属性字符串时,它只给出文本而不是我在文本视图中添加的html代码。

[self.textview.attributedString string]
return text = testing

请帮忙。实际上我想在文本中使用html显示一些图像,然后需要在服务器上上传该代码。

我无法理解HTML文本消失的地方,它应该保留在文本中的某些位置,但我无法获得该文本 在此先感谢

2 个答案:

答案 0 :(得分:2)

你不能使用self.textView.text,因为你所拥有的只是纯文本,同时你不能使用self.textView.attributedText,因为你所拥有的只是NSAttributedString对象,即使用

表示你构建的内容
[[NSAttributedString alloc] initWithData:yourData options:yourOptions documentAttributes:nil error:nil];`

NSAttributedString不是用html表示构建的,你使用的只是一种从html开始轻松创建NSAttributedString的方法,但是在两个表示之间没有完全的支持。

你需要一些稍微复杂的东西来完成这件事,你可能想要检查这个回购 https://github.com/IdeasOnCanvas/Ashton

特别是我指的是具有这种酷方法的类别NSAttributedString+Ashton.h

// Attributed String with CT Attributes
- (NSString *)mn_HTMLRepresentationFromCoreTextAttributes;

我不确定实现支持的html标签,但无论如何它都是一个开始。

如果您的目的仅仅是保存您为以后使用而设置的html,您可以继承NSAttributedString,添加一个新属性NSString *html,您将设置覆盖initWithData:options:documentAttributes:error:显然它不会不能很好地扩展,但在短期内这是一个'肮脏'的解决方案。

答案 1 :(得分:1)

一旦你将html文本转换为属性字符串然后就无法取回它,我会在第二个变量中保存一份文本副本供以后使用。