1,输入内容时光标乱跳问题
处理:
textView.layoutManager.allowsNonContiguousLayout = NO;
这句代码设置了 UITextView 中的 layoutManager(NSLayoutManager) 是否非连续布局属性,默认是 YES,设置为 NO 后 UITextView 就不会再自己重置滑动了。
2,判断输入内容长度时,中文联想输入法文本长度判断不准确问题
如图,输入中文文字,如 几次
时,拼音 jici
已经在 textView 中,被计算到了文本的长度中,而我们要获取的长度是选择了 几次
后的长度,而不是在拼音状态 jici
的长度
处理:
/ *如果可以选择文本,则可以对其进行标记。
标记的文本表示“暂时的插入的文本,其尚未被用户确认。
它需要在显示屏上进行独特的视觉”处理。
如果有任何标记的文本选择,无论是*注释还是扩展范围,总是驻留*
设置标记的文本将替换现有的标记文本,如果没有,则从当前选择中插入。 * /
@property (nullable, nonatomic, readonly) UITextRange *markedTextRange; // Nil if no marked text.
因此,判断是否有标记文本,有则不判断文本的长度
- (void)textViewDidChange:(UITextView *)textView{
if(textView.markedTextRange) return;
if(textView.lengh > maxValue) {
NSLog(@"文本长度超过maxValue");
}
}