【问题标题】:uitextview scrollRangeToVisible scroll from top to bottom everytimeuitextview scrollRangeToVisible 每次从上到下滚动
【发布时间】:2014-12-15 08:36:30
【问题描述】:

我在情节提要中有两个 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>

此代码有效,但问题是每次从上到下滚动都会激怒用户。任何解决方案将不胜感激?

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案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];
    }
    

    【讨论】:

      【解决方案2】:

      两个 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 负责这项工作......

      【讨论】:

      • 感谢您的帮助,但这不是我的要求。当用户在第一个文本视图中键入并按返回键时,我需要另一个文本视图来滚动底部
      • @user1495387 请试试这个答案。
      • 这和我做的一样,我告诉过你每次我输入返回键时它都会从上到下滚动
      • 你想发生什么,当你按下回车键时,你如何进行textView结束编辑?
      • @user1495387 另一个问题,两个 textView 具有相同的尺寸和字体?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多