我需要在渲染之前捕获输入的文本,以便对其应用一些属性。
为此,我使用 UITextView 的委托方法 shouldChangeTextInRange 以及 NSAttributedString。到目前为止一切顺利,并且有效。
问题是,当 UITextView 获得一定数量的文本并开始滚动时,更改属性文本使其滚动到顶部,而下一个字符将使其滚动回末尾。
打字时,它一直在上下移动。
设置 textview.text,而不是属性文本,它可以工作 n
有什么建议吗?
提前致谢。
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSAttributedString * newString = [[NSAttributedString alloc] initWithString:text attributes:nil];
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithAttributedString:_textView.attributedText];
[string insertAttributedString:newString atIndex:range.location];
textView.attributedText = string;
range.location += text.length;
textView.selectedRange = range;
return NO;
}