【问题收集】UITextView 问题集合

1,输入内容时光标乱跳问题

处理:
textView.layoutManager.allowsNonContiguousLayout = NO;

这句代码设置了 UITextView 中的 layoutManager(NSLayoutManager) 是否非连续布局属性,默认是 YES,设置为 NO 后 UITextView 就不会再自己重置滑动了。


2,判断输入内容长度时,中文联想输入法文本长度判断不准确问题

【问题收集】UITextView 问题集合_第1张图片
Paste_Image.png

如图,输入中文文字,如 几次 时,拼音 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");
    }
}


你可能感兴趣的:(【问题收集】UITextView 问题集合)