键盘出现时如何滚动查看?

Hen*_*y F 37 iphone keyboard xcode scroll uitextfield

我知道这个问题一再被问到,但似乎没有什么对我有用.大多数解决方案都已过时,其余的是非常庞大的代码块,比实际的项目编码大十倍.我有几个UITextField垂直排列,但当键盘启动编辑一个时,它会覆盖文本字段.我想知道是否有一种简单的初学者方式来滚动视图,然后在编辑开始和结束时退回?

谢谢.

Pet*_*ese 29

我使用键盘通知和当前第一响应者的检测使用滚动和非滚动视图的解决方案,但有时我使用这个简单的解决方案:简单的方法是通过文本字段委托的textViewDidBeginEditing:方法检测打开键盘和移动整个视图.最简单的方法是使用更改self.view.bounds.origin.y为-100(或其他)的内容.使用相应的textViewShouldEndEditing:方法将其设置为相反的方法,在这种情况下为100.改变bounds是一个相对的过程.更改后,移动框架,但边界原点仍为零.

  • 谢谢.这是我到目前为止的代码:` - (BOOL)textViewDidBeginEditing:(UITextField*)textField {[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.35f]; CGRect frame = self.view.frame; frame.origin.y = -100; [self.view setFrame:frame]; [UIView commitAnimations]; 但是我收到一条警告说"控制到达无效功能的结束".我不知道怎么解决这个问题,抱歉我还是初学者. (6认同)

Gui*_*ume 25

自从我发现它以来,我使用TPKeyboardAvoiding - https://github.com/michaeltyson/TPKeyboardAvoiding.

它工作得很好,而且很容易设置:

  • 将a添加UIScrollView到视图控制器的xib中
  • 将滚动视图的类设置为TPKeyboardAvoidingScrollView(仍然在xib中,通过身份检查器)
  • 将所有控件放在该滚动视图中

如果需要,您还可以以编程方式创建它.


在一个内部有一个同样需要的类UITableViewController; 仅在您支持低于4.3的iOS版本时才需要它.