开始编辑和键盘时,在textField上滚动

我有一个由UIImageView组成的viewController,填充整个视图和两个位于视图中心的textField。 所有这些都位于ScrollView中。 我使用故事板,我禁用了自动布局。 当我点击一个textField,从而打开键盘,我希望滚动直接在textField上移动。 我怎样才能做到这一点?

考虑你的TextField出口被命名为txtField然后使用UITextField委托

 txtField.delegate = self; 

考虑到你的ScrollView出口名为scrollView 。 实现Textfield委托方法:

 - (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"%@",NSStringFromCGRect(textField.frame)); [scrollView scrollRectToVisible:textField.frame animated:YES]; } 

希望这可以帮助。

如果您需要更多帮助,请告诉我。

我通常使用这个成功: http : //developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

将您的控制器添加为键盘通知的观察者。 当您收到通知时,调整滚动视图框架和/或设置内容偏移量(取决于您想要的确切效果和内容大小)。

以下是我以前使用过的几个选项:

  • 苹果公司的Doco。 请参阅移动键盘下方的内容
  • 与可爱的文章, 滑动UITextFields周围,以避免键盘
  • 如果在视图中有几个文本字段或其他表单元素,则可以使用类似EZForm的东西。 它自动重新定位视图以保持input字段可见,并处理inputvalidation和其他有用的与forms有关的东西。

您可以将文本字段坐标系转换为滚动视图坐标系。 使用下面的代码

 -(void)rearrangeView{ // previous if (txtActiveField == txtUsername) { CGPoint pt; CGRect rc = [txtUsername bounds]; rc = [txtUsername convertRect:rc toView:scrollViewLogin]; pt = rc.origin; pt.x = 0; pt.y -= 40; [scrollViewLogin setContentOffset:pt animated:YES]; } else if (txtActiveField == txtPassword) { // [self.txtEmail becomeFirstResponder]; CGPoint pt; CGRect rc = [txtPassword bounds]; rc = [txtPassword convertRect:rc toView:scrollViewLogin]; pt = rc.origin; pt.x = 0; pt.y -= 40; [scrollViewLogin setContentOffset:pt animated:YES]; } } #pragma mark- UITextField Delegate -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { txtActiveField = textField; //txtActiveField.placeholder = @""; [self rearrangeView]; return YES; } 

这里txtActiveField是types为UItextField的实例variables