我在故事板中有两个uitextview。我需要的是当用户在一个textview中键入内容时应该在另一个textview中显示完全相同的数据,当文本在textview区域下方时,它应该自动向上滚动显示最后一行。这是我在uitextview委托中的代码
<code>
-(void)textViewDidChange:(UITextView *)textView
{
self.textview2.text = textview.text;
NSRange selection = self.textview2.selectedRange;
[self.textview2 scrollRangeToVisible:NSMakeRange([self.textview2.text length], 0)];];
}
</code>
此代码有效但问题是每次从上到下滚动时会刺激用户。任何解决方案都将受到赞赏?
答案 0 :(得分:1)
试试这个家伙
-(void)textViewDidChange:(UITextView *)textView
{
self.textview2.text = textview.text;
[self.textview2 scrollRectToVisible:CGRectMake(0, self.textview2.contentSize.height, self.textview2.contentSize.width, CGFLOAT_MAX)
animated:NO];
}
答案 1 :(得分:0)
textView必须将viewController作为委托:
self.textView1.delegate = self;
self.textview2.delegate = self;
然后以这种方式实现这些方法:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ([scrollView isEqual:self.textview2])
{
[self.textview2 scrollRangeToVisible:NSMakeRange([self.textview2.text length], 0)];
}
}
-(void)textViewDidChange:(UITextView *)textView
{
if ([textView isEqual:self.textView1])
{
self.textview2.text = textView.text;
[self.textview2 scrollRangeToVisible:NSMakeRange([self.textview2.text length], 0)];
}
}
问题是textView的工作方式,当你这样做时:self.textview2.text = textView.text; textView中的文本首先指向nil,(没有文本,contentOffSet指向0.0),然后新文本指向。内容在零和大内容之间变化(实际上越来越大)。 textContainer和textStorage的文本视图负责这项工作......