当新行添加到 UITextView 实例中时,如何向上滚动视图?

Posted

技术标签:

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

我已经成功设置了一个滚动视图,可以移动一些文本字段和一个文本视图,以防它们被键盘隐藏。但是,当文本视图收到一些超出第一行的文本时,下一行显然被键盘隐藏了。因此,我正在寻找一种技巧来在每次向 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;
 

【讨论】:

以上是关于当新行添加到 UITextView 实例中时,如何向上滚动视图?的主要内容,如果未能解决你的问题,请参考以下文章

当移动到嵌入在 UITableViewCell 中的 UITextView 中的新行时,光标消失

当用户输入 29 个字符时,将 UITextView 插入符号移动到新行?

当键盘出现在 iOS 7 中时如何调整 UITextview 的大小

在oracle中插入表B后创建触发器以将新行添加到表A中时出错

当键盘出现在swift中时滚动UITextView

UITextView 在 UITableViewCell 内使用新行自动增长