【问题标题】:How to scroll view up as new line is added into UITextView instance?当新行添加到 UITextView 实例中时,如何向上滚动视图?
【发布时间】:2011-10-20 14:35:03
【问题描述】:

我已经成功设置了一个滚动视图,可以移动一些文本字段和一个文本视图,以防它们被键盘隐藏。但是,当文本视图收到一些超出第一行的文本时,下一行显然被键盘隐藏了。因此,我正在寻找一种技巧来在每次向 UITextview 实例添加/删除新行时向上/向下移动视图。

感谢您的帮助,

斯蒂芬

【问题讨论】:

    标签: iphone ios ios4 uiscrollview uitextview


    【解决方案1】:

    你可以实现

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    

    您的 UITextView 委托上的方法,计算 textviews 文本中换行符的数量,计算您必须滚动多远,然后滚动。 (每次用户输入字符时都会调用此方法。)

    或者,您可以采用更简单的方法并滚动足够远以显示您的整个UITextView。如果用户输入的内容超出了 textview 的大小,则 textview 将自动开始滚动。

    【讨论】:

      【解决方案2】:

      使用scrollRectToVisible:animated:setContentOffset:animated: - 在你的情况下,第一个,如:

      [scrollView scrollRectToVisible:textField.frame animated:YES];
      

      您可能还需要将文本字段内容滚动到可见,但我认为这应该会自动发生。

      【讨论】:

        【解决方案3】:

        因此,如果您编译以前的答案:

        只需将您的 textView.delegate 设置为 self 并将您的 viewController 设置为 <UITextViewDelegate> 和:

        - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
            [textView scrollRangeToVisible:range];
            return YES;
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 1970-01-01
          • 1970-01-01
          • 2012-12-12
          相关资源
          最近更新 更多