键盘自动滚动?

时间:2016-10-26 21:37:18

标签: ios uiscrollview keyboard

我正在使用自动布局的iPhone应用程序,该应用程序在视图底部有一个上部和下部字段。用户点击一个字段,我必须在键盘上方向上滚动视图。这是我的keyboardDidShow代码。

- (void) keyboardDidShow:(NSNotification *)notification
{
    CGSize kbSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
    [[self scrollView] setContentInset:contentInsets];

    [self setIsKeyboardVisible:YES];
}

这不仅不起作用(我省略了实际的滚动命令),但当我点击上部字段时,视图向上滚动,直到该字段的底部位于键盘的顶部。当我点击键盘上的“下一步”将光标移动到下方字段时,视图会向上滚动一点,直到下方字段的底部位于键盘的顶部。

以下是我处理Return键的方法:

- (BOOL) textFieldShouldReturn:(UITextField*)textField
{
    switch ([textField tag])
    {
        case vtNameField:
            [[self txtEmail] becomeFirstResponder];

            break;

        case vtEmailField:
            [[self txtEmail] resignFirstResponder];

            break;

        default:
            break;
    }

    return NO;
}

有人知道导致滚动的原因吗?我在其他应用程序中看到这种行为,我认为它必须是手工编码的。我只在我的一个视图中看到这个,我想知道是否是由于我配置的东西。

1 个答案:

答案 0 :(得分:0)

使用此库非常简单,无需代码。 只需将视图的类名称设置为“TPKeyboardAvoidingScrollView”,视图将自动滚动以使键盘上方的TextField。

https://github.com/michaeltyson/TPKeyboardAvoiding