我有一个
如果每输入一个字符就进行解析,那么我基本上是获取
如果仅在输入特定特殊字符时进行解析,则可以更好地解决此问题,但出现诸如每个句子的第二个单词首字母大写等奇怪的错误。
UITextView
,当输入特定字符时,会解析并改变其属性。文本不会改变,只有描述文本格式的属性发生了改变。如果每输入一个字符就进行解析,那么我基本上是获取
text
,使用正确的格式创建带属性的字符串,并将文本视图的attributedText
属性设置为我的新的带属性字符串。这会完全破坏自动更正、双击空格键快捷方式和拼写检查功能。如果仅在输入特定特殊字符时进行解析,则可以更好地解决此问题,但出现诸如每个句子的第二个单词首字母大写等奇怪的错误。
- (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
}
我的问题是:是否有一种方法可以更改文本视图的文本属性,而不需要重置textview的attributedText
属性并破坏所有那些方便的UITextView
特性?
TextKit
来实现您想要的功能。 - fatuhoku