如何在用户开始键入时记住UITextView中的文本属性

时间:2015-08-11 16:55:38

标签: ios swift uitextview uitextviewdelegate

我正在使用UITextView,我试图在用户输入时使用attributedText属性显示文本。

这是我目前的代码:

textView.attributedText = NSMutableAttributedString(
    string: "",
    attributes: [
        NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
        NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
        NSKernAttributeName: 0.5,
        NSParagraphStyleAttributeName: paragraphStyle
    ]
)

问题是,如果您提供空字符串,则当用户开始键入时,文本不会使用attributedText属性进行格式化。

但是,我注意到如果我提供了一个字符串,当用户开始附加该字符串时,文本将使用attributedText属性进行格式化。

我能想到完成我需要的唯一方法是覆盖此函数,并在每次用户输入密钥时将文本设置为attributedText:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool

没有其他更好的方法吗?

1 个答案:

答案 0 :(得分:3)

您需要使用typingAttributes属性,而不是设置空的属性字符串。

textView.typingAttributes = [
    NSFontAttributeName: UIFont(name: "AvenirNextLTPro-Regular", size: 12.5)!,
    NSForegroundColorAttributeName: UIColor.colorFromCode(0x262626),
    NSKernAttributeName: 0.5,
    NSParagraphStyleAttributeName: paragraphStyle
]

另请参阅official documentation

  

要应用于用户输入的新文本的属性。