UITextField隐藏在键盘后面

时间:2012-03-20 08:27:13

标签: iphone objective-c xcode

我按照本教程this tutorial 来避免文字字段隐藏在键盘后面。问题出在我使用两个视图时。 View1按下一个按钮调用View2。两个视图都有文本字段和下一个按钮。但问题是这个代码只适用于一个视图

案例1

  1. 在我启动ios模拟器view1加载后,其中有一个UITextField和一个按钮
  2. 我点击UITextField,然后键盘弹出,视图可以扫描,所以如果文本字段隐藏在键盘后面,它会向上移动。
  3. 然后我按下一个按钮,这样我就可以查看.2。
  4. 现在在view2上我单击UITextField然后弹出键盘,但文本字段位于键盘后面,无法向上滚动。
  5. 案例2

    1. 启动ios模拟器后,加载了一个带有一个UITextField和一个按钮的视图。
    2. 这次我只是按下了Next按钮而没有点击UITextField。所以现在我转到了view2
    3. 在view2中,我按下UITextField,键盘弹出,我可以在键盘上滚动文本字段。
    4. 我不知道为什么会发生这种情况它应该对两个视图都一样。如链接中所示,我创建了所需的文件MIBackgroundTapDelegate.h,

      MIScrollView.h
      MIScrollView.m
      ScrollableViewController.h
      ScrollableViewController.m
      

1 个答案:

答案 0 :(得分:1)

阅读你的问题我假设你在键盘弹出窗口中遇到问题。您应该将UITextFilds放在UIScrollView中并调用此委托方法。按下Next / Return按钮将调用它,它将光标移动到第二个UITextField

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
  NSInteger nextTag = textField.tag + 1;
  UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];

  if (nextResponder) 
{
    // Found next responder, so set it.
    [nextResponder becomeFirstResponder];
    txtPswd.secureTextEntry=YES;
    sv.contentOffset=CGPointMake(0, 150);  //it will push your scrollview 150 pixels upwards.
} 
else 
{
    // Not found, so remove keyboard.
    [textField resignFirstResponder];
    sv.contentOffset=CGPointMake(0, 0);
}
    return NO;
}