6

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

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

4

3 回答 3

7

您需要使用以下代码根据文本范围向下滚动文本视图(或根据打字说)

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

希望对你有帮助...

于 2012-05-05T07:14:43.093 回答
5

我猜你必须将你的 UITextView 调整为键盘显示/隐藏的大小。所以键盘不会超过你的文本视图。这是示例代码。

- (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
}
于 2012-05-05T07:33:50.840 回答
2

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

于 2012-05-05T15:41:03.807 回答