使用NSHTMLTextDocumentType属性在UITextView中使用无序列表复制的项目符号

时间:2018-03-19 10:32:57

标签: html ios swift uitextview nsattributedstring

我在UITextView中显示了一些HTML内容。内容有要点。这些项目符号是使用无序列表(<ul>)创建的,但每个项目符号都是重复的。

enter image description here

我创建 NSAttributedString ,如

let contentHTML = ...

guard let data = contentHTML.data(using: .utf8) else {
    return
}

let attributedOptions: [String: AnyObject] = [
    NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject,
    NSCharacterEncodingDocumentAttribute: NSNumber(value: String.Encoding.utf8.rawValue)
]

textView.attributedText = try! NSAttributedString(data: data, options: attributedOptions, documentAttributes: nil)

为什么子弹点重复? 有什么想法吗?

谢谢

更新

HTML内容类似于

<p>Let’s take a quick look.</p><br/><ul><br/><li>lksdfjalsdjlajf</li><br/><li>lasdkjflaksjdf</li><br/><li>...

1 个答案:

答案 0 :(得分:0)

所以,我做了一些测试,并注意到导致问题的原因。基本上,\n<br><ul>之间的每一个新行(<li>UITextView)都会产生额外的子弹。

一种解决方法是将<br/>替换为空字符串:

contentHTML = contentHTML.replacingOccurrences(of: "</li><br/><li>", with: "</li><li>")
contentHTML = contentHTML.replacingOccurrences(of: "<ul><br/><li>", with: "<ul><li>")
contentHTML = contentHTML.replacingOccurrences(of: "</li><br/></ul>", with: "</li></ul>")

<强>结果:

enter image description here