我在故事板中有两个uitextview。我需要的是,当用户在一个文本视图中键入内容时,应该在另一个文本视图中显示完全相同的数据,而且当文本在文本视图区域下时,它应该自动向上滚动显示最后一行。这是我在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>这段代码可以工作,但问题是每次它从上到下滚动时,这会激怒用户。任何解决方案都将不胜感激?
发布于 2014-12-15 16:54:26
试试这家伙
-(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];
}发布于 2014-12-15 16:43:44
两个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负责这项工作...
https://stackoverflow.com/questions/27480089
复制相似问题