【发布时间】:2011-10-20 14:35:03
【问题描述】:
我已经成功设置了一个滚动视图,可以移动一些文本字段和一个文本视图,以防它们被键盘隐藏。但是,当文本视图收到一些超出第一行的文本时,下一行显然被键盘隐藏了。因此,我正在寻找一种技巧来在每次向 UITextview 实例添加/删除新行时向上/向下移动视图。
感谢您的帮助,
斯蒂芬
【问题讨论】:
标签: iphone ios ios4 uiscrollview uitextview
我已经成功设置了一个滚动视图,可以移动一些文本字段和一个文本视图,以防它们被键盘隐藏。但是,当文本视图收到一些超出第一行的文本时,下一行显然被键盘隐藏了。因此,我正在寻找一种技巧来在每次向 UITextview 实例添加/删除新行时向上/向下移动视图。
感谢您的帮助,
斯蒂芬
【问题讨论】:
标签: iphone ios ios4 uiscrollview uitextview
你可以实现
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
您的 UITextView 委托上的方法,计算 textviews 文本中换行符的数量,计算您必须滚动多远,然后滚动。 (每次用户输入字符时都会调用此方法。)
或者,您可以采用更简单的方法并滚动足够远以显示您的整个UITextView。如果用户输入的内容超出了 textview 的大小,则 textview 将自动开始滚动。
【讨论】:
使用scrollRectToVisible:animated: 或setContentOffset:animated: - 在你的情况下,第一个,如:
[scrollView scrollRectToVisible:textField.frame animated:YES];
您可能还需要将文本字段内容滚动到可见,但我认为这应该会自动发生。
【讨论】:
因此,如果您编译以前的答案:
只需将您的 textView.delegate 设置为 self 并将您的 viewController 设置为 <UITextViewDelegate> 和:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
[textView scrollRangeToVisible:range];
return YES;
}
【讨论】: