UITextView,在编辑时滚动?

时间:2012-05-05 07:11:37

标签: ios cocoa-touch keyboard uitextview

我有一个很大的UITextView,几乎全屏。如果我点击它,键盘弹出,我可以编辑文本。但是,我输入的时间越长,文本最终会在键盘后面的视图中运行。我再也看不到我在打字了。

你是如何处理的?您是否必须跟踪光标位置并手动滚动视图?

3 个答案:

答案 0 :(得分:7)

您需要使用以下代码根据文本范围(或根据输入说明)向下滚动textview

NSRange range = NSMakeRange(textView.text.length - 1, 1);
[textView scrollRangeToVisible:range];

希望,这会对你有帮助......

答案 1 :(得分:5)

我猜您必须将UITextView的大小设置为键盘显示/隐藏。所以键盘不会超过你的textview。这是示例代码。

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
}

- (void)keyboardWillShow:(NSNotification *)notification
{
    [UIView beginAnimations:nil context:nil];
    CGRect endRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGRect newRect = YOUT_TEXT_VIEW.frame;
    //Down size your text view
    newRect.size.height -= endRect.size.height;
    YOUT_TEXT_VIEW.frame = newRect;
    [UIView commitAnimations];
}

- (void)keyboardWillHide:(NSNotification *)notification
{
    ... // Resize your textview when keyboard is going to hide
}

答案 2 :(得分:2)

TPKeyboardAvoiding是一款出色的工具,可以处理所有滚动操作以避免使用键盘。 /非常/方便,强烈推荐。请参阅:https://github.com/michaeltyson/TPKeyboardAvoiding