如何在UITextView实例中添加新行时向上滚动查看?

时间:2011-10-20 14:35:03

标签: iphone ios ios4 uiscrollview uitextview

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

求助,

的Stephane

3 个答案:

答案 0 :(得分:1)

您可以实施

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
在您的UITextView委托上的

方法,计算textviews文本中的换行符数,计算您需要滚动的距离和滚动。 (每次用户键入一个字符时都会调用此方法。)

或者,您可以使用更简单的路线并滚动到足以显示整个UITextView。如果用户输入的文本视图超过了文本视图,则textview将自动开始滚动。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

只需将您的textView.delegate设为自己,将viewController设为<UITextViewDelegate>,然后:

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