【问题标题】:How to make the textfield move up when keyboard covers it up键盘覆盖时如何使文本字段向上移动
【发布时间】:2011-05-05 10:03:43
【问题描述】:

我有一个应用程序,其中有 2 个文本字段和一个文本视图。当我点击第一个文本字段时,我的键盘弹出,他们的没有问题,但是当我输入第二个文本字段时,我的键盘弹出并覆盖文本字段。

我希望当我单击第二个文本字段时,文本字段应该向上移动一点,以便我可以输入并且我有一个文本视图。但是我已经为 textview 编写了代码,所以当我输入 textview 时它会自动移动。

问题出在文本字段上。我该如何解决这个问题?

【问题讨论】:

    标签: iphone objective-c textview textfield


    【解决方案1】:

    考虑使用UITableViewController。否则实现UITextFieldDelegate 并将您的 UIView 移动到- (void)textFieldDidBeginEditing:(UITextField *)textField 方法中的所需位置。

    【讨论】:

    • +1 推荐 UITableViewController - 我不能强调它在实现表单时有多方便。
    • 这不是最佳答案,因为如果用户使用蓝牙键盘,可以调用 textFieldDidBeginEditing,并且不需要任何滚动。您应该改为观看键盘通知事件以检测键盘的存在。
    【解决方案2】:

    查看下面的链接 - 该解决方案由 Micheal Tyson 编写。它解决了 UITableView 和 UIScrollView,可以很容易地更改并且就像一个插入式组件一样工作。我正在使用它,效果很好。

    A drop-in universal solution for moving text fields out of the way of the keyboard

    【讨论】:

    • 嗨 delirus,我已经浏览了您在回答中提到的链接,但我遇到了一个问题,键盘在整个应用程序中保持不变。即使文本字段结束编辑,它也不会退出
    【解决方案3】:

    创建两个方法,如下所示,第一个是让视图稍微向上,第二个是让视图回到原来的位置

    第一种方法:

        [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.3];
    
    self.view.transform = CGAffineTransformTranslate(self.view.transform, 0, -175);
    [UIView commitAnimations];
    

    第二种方法:

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.3];
    
    self.view.transform = CGAffineTransformTranslate(self.view.transform, 0, 175);
    [UIView commitAnimations];
    
    [self.destext resignFirstResponder];
    

    在 textfieldEditingDidbegin 和 DidEndonExit 上调用这些方法

    【讨论】:

      【解决方案4】:

      将视图添加到UIScrollView。然后使用UITextFieldDelegate 方法来设置scrollViewcontentOffset 当textField 被点击时。当用户完成输入文本时重置contentOffset

      【讨论】:

        【解决方案5】:

        我创建了一个简单的 UIView 子类,其中包含 UITextView 和一个发送按钮,该按钮在键盘显示时向上移动,在键盘隐藏时向下移动。除此之外,UITextView 会根据其中的文本数量调整大小。

        看看这里:

        https://github.com/kerrygrover/KBTextView

        【讨论】:

          【解决方案6】:

          您可能已经尝试过一个明显的方法,但我花了一段时间才掌握的方法是从横向更改为纵向。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-05-01
            • 1970-01-01
            • 2015-05-03
            • 1970-01-01
            • 2016-07-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多