我有一个UITextView
被解析的,并且在输入某些字符时它的属性发生了变化。文本没有改变,只有描述文本格式的属性。
如果我解析每个字符条目,我实际上是在抓取text
,创建具有正确格式的属性字符串,并将attributedText
textview 的属性设置为我的新属性字符串。这完全破坏了自动更正、双空格快捷方式和拼写检查。
如果我只在输入某些特殊字符时进行解析,这会更好一些,但我会遇到奇怪的错误,比如每个句子的第二个单词都是大写的。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if (text.length == 0) {
return YES;
}
unichar firstCharacterInText = [text characterAtIndex:0];
if (/* special character */) {
[self processTextView];
}
}
- (void) processTextView {
NSString *text = self.text;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
[attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:kFontRegular size:12.0f] range:NSMakeRange(0, text.length)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor textColor] range:NSMakeRange(0, text.length)];
// set other properties
}
我的问题是:有没有办法改变我的文本视图的文本属性而不重置文本视图的attributedText
属性并破坏所有这些方便的功能UITextView
?