键盘自动滚动?

Posted

技术标签:

【中文标题】键盘自动滚动?【英文标题】:Automatic scrolling for keyboard? 【发布时间】:2016-10-26 21:37:18 【问题描述】:

我正在开发一个具有自动布局的 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】:

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

https://github.com/michaeltyson/TPKeyboardAvoiding

【讨论】:

以上是关于键盘自动滚动?的主要内容,如果未能解决你的问题,请参考以下文章

从 UISplitViewController 显示时,UITableViewController 自动滚动停止考虑键盘

打开电脑所有的窗口滚动条会自动滚动是啥出了问题,急,在线等

请教CGridCtrl控件的自动滚动条设置

tvOS UISearchController - 滚动时如何避免自动搜索栏和键盘隐藏行为?

当虚拟键盘出现在本机反应中时如何自动向上滚动屏幕(在android上)

如何在 ios 中使用自动布局更改滚动视图内容大小