在UITextView

时间:2017-11-24 10:21:56

标签: ios swift

我有一些文字来自一些wordpress编辑器,其中包括一些文本,格式(回车)和一些基本的HTML。在我的iOS应用程序中显示时,我使用

let attributedString = try! NSMutableAttributedString(data: myText.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!, options: [NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType]
textview.attributedText = attributedString

这将从文本中删除所有回车符。如果我只是使用

textview.text = myText

它不会显示html。是否可以同时显示HTML和格式? 例如,在编辑器中输入

"text text text

text text <a href="http://example.com">some link</a>

text text text"

并在我的应用中显示它看起来像

  

&#34;文字文字文字文字some link文字文字&#34;

我知道这可以通过在html p标签中包装每个段落来完成,但我只想使用回车键格式化文本

2 个答案:

答案 0 :(得分:0)

HTML中的所有空白字符序列(包括换行符)都将转换为单个空格。这是HTML的基本属性。

如果您需要换行符,请使用<br>。你可以简单地说:

myText.replacingOccurrences(of: "\n", with: "<br>")
转换为属性字符串之前

答案 1 :(得分:0)

  

我知道这可以通过在html p标签中包装每个段落来完成,但我只想使用回车键格式化文本

您需要<br>来渲染硬回车,但如果您愿意,可以通过编程方式添加它们:

func html(from: String) -> NSAttributedString? {
    guard let data = from
        .replacingOccurrences(of: "\n", with: "<br>")
        .data(using: .unicode, allowLossyConversion: true) { else return nil }

    return try? NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType])
}

然后您可以使用以下方法:

var myText = """
"text text text

text text <a href="http://example.com">some link</a>

text text text"
"""

if let html = html(from: myText) {
    // do something with html

}