当新行添加到 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 的大小