uitextview scrollRangeToVisible每次从上到下滚动

时间:2014-12-15 08:36:30

标签: ios objective-c xcode

我在故事板中有两个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>

此代码有效但问题是每次从上到下滚动时会刺激用户。任何解决方案都将受到赞赏?

2 个答案:

答案 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的文本视图负责这项工作......