UITextView支持NSAttributedString,所以在UITextView里会有不同颜色、字号的字符串拼接在一起。在常见的场景中,比如在微博的发布框中有 @XXX 或者 话题** #XX# **都会用颜色和其他文本进行区分。那与 typingAttributes 有什么关系呢?我们先来看一下,typingAttributes的官方解释
This dictionary contains the attribute keys (and corresponding values) to apply to newly typed text. When the text view’s selection changes, the contents of the dictionary are cleared automatically.
【翻译过来指,该字段存储了用于设置新输入的文本属性的键值对,比如字号,字体,颜色等。当光标的位置改变时,该值也会被清空再重置。】
经过我自己测试,发现该字典存储的属性始终保持与当前光标之前的字符属性一致。在实际开发场景中,需要注意的一点是,对于复制粘贴进入UITextView的文本,应该保证粘入文本的属性保持一致,否则如果光标在 @XXX 这些不同于一般文本的位置上,在此处粘贴的内容就会和 @XXX一样。为了防止这一问题,我们可以在
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
textView.typingAttributes = self.textAttributes;
return YES;
}
方法里重置。