董瑞龙 发表于 2013-1-30 20:38:57

UITextField控件处理键盘弹出时遮住输入框的问题。

原文连接:
http://www.devdiv.com/thread-70159-1-1.html

实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。
- (void)keyboardWillShow:(NSNotification *)noti{                //键盘输入的界面调整                //键盘的高度      float height = 216.0;                        CGRect frame = self.view.frame;                frame.size = CGSizeMake(frame.size.width, frame.size.height - height);                ;//动画开始                  ;                   ;                  ;               ;         }- (BOOL)textFieldShouldReturn:(UITextField *)textField {            // When the user presses return, take focus away from the text field so that the keyboard is dismissed.            NSTimeInterval animationDuration = 0.30f;            ;            ;            CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);            self.view.frame = rect;            ;            ;    return YES;      }- (void)textFieldDidBeginEditing:(UITextField *)textField{                CGRect frame = textField.frame;      int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216      NSTimeInterval animationDuration = 0.30f;                        ;                        ;      float width = self.view.frame.size.width;                        float height = self.view.frame.size.height;                if(offset > 0)      {                CGRect rect = CGRectMake(0.0f, -offset,width,height);                              self.view.frame = rect;                }                ;                }

另外我自己做了一点修改:
在实际用的时候,键盘消失原来的控件并没有回归都原来的位置,而是上移了20个像素,我估计是因为顶部Bar的原因,只要将22行代码改成如下就可以了:
CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);
页: [1]
查看完整版本: UITextField控件处理键盘弹出时遮住输入框的问题。