首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >uitextview scrollRangeToVisible每次从上到下滚动

问uitextview scrollRangeToVisible每次从上到下滚动
EN

Stack Overflow用户
提问于 2014-12-15 16:36:30
回答 2查看 1.3K关注 0票数 2

我在故事板中有两个uitextview。我需要的是,当用户在一个文本视图中键入内容时,应该在另一个文本视图中显示完全相同的数据,而且当文本在文本视图区域下时,它应该自动向上滚动显示最后一行。这是我在uitextview委托中的代码

代码语言:javascript
复制
<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>

这段代码可以工作,但问题是每次它从上到下滚动时,这会激怒用户。任何解决方案都将不胜感激?

EN

回答 2

Stack Overflow用户

发布于 2014-12-15 16:54:26

试试这家伙

代码语言:javascript
复制
-(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
EN

Stack Overflow用户

发布于 2014-12-15 16:43:44

两个textView都必须将viewController作为委派:

代码语言:javascript
复制
     self.textView1.delegate = self;
     self.textview2.delegate = self;

然后以这种方式实现这个方法:

代码语言:javascript
复制
 -(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负责这项工作...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27480089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档