对于我们的跨平台软件解决方案(iOS app +网站),我们需要在应用中允许显示和修改富文本。我们的解决方案仅支持少量字符属性 - 粗体,斜体,下划线,基本文本颜色和超链接(仅在网站上链接,而不是应用程序)。
富文本由现有网站以编码HTML文本的形式存储和传输。我的问题与我们需要支持的iOS应用有关。
到目前为止,我已成功将编码的HTML 文本转换为 NSAttributedString (使用此示例应用程序附带的屏幕截图) -
NSString *richTextHTML = self.textViewTop.text;
richTextHTML = [richTextHTML stringByDecodingHTMLEntities]; // Decodes HTML entities like <p> to <p> etc.
NSAttributedString *attribString = [[NSAttributedString alloc] initWithData:[richTextHTML dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType}
documentAttributes:nil error:nil];
self.textViewBottom.attributedText = attribString;
此处stringByDecodingHTMLEntities
是解码HTML实体的类别方法。编码的HTML文本示例是 -
<p><strong>bold</strong><em>italic</em><u>underline</u><span style="color:rgb(255, 0, 0)">color</span></p>
但是,在编辑NSAttributedString之后,我没有现有的方法可以转换回编码的HTML。而且,这就是问题所在。
我试过这个,但它只返回HTML文档 -
- (NSString *)htmlStringFromAttributedString:(NSAttributedString *)attribText {
NSDictionary *exportParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
NSData *htmlData = [attribText dataFromRange:NSMakeRange(0, attribText.length) documentAttributes:exportParams error:nil];
return [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
}
您能否提供一些简单的方法,或者您认为我需要枚举NSAttributedString的文本运行并自己创建编码的HTML字符串?
作为旁注/关键点 -
App支持iOS 7及更高版本。
在网站上,我们使用第三方库CKEditor来做同样的事情。