首页 > 代码库 > UITextField控件处理键盘弹出时遮住输入框的问题
UITextField控件处理键盘弹出时遮住输入框的问题
原文连接:
http://www.devdiv.com/thread-70159-1-1.html
实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。
1 - (void)keyboardWillShow:(NSNotification *)noti 2 { 3 //键盘输入的界面调整 4 //键盘的高度 5 float height = 216.0; 6 CGRect frame = self.view.frame; 7 frame.size = CGSizeMake(frame.size.width, frame.size.height - height); 8 [UIView beginAnimations:@"Curl"context:nil];//动画开始 9 [UIView setAnimationDuration:0.30]; 10 [UIView setAnimationDelegate:self]; 11 [self.view setFrame:frame]; 12 [UIView commitAnimations]; 13 } 14 15 16 - (BOOL)textFieldShouldReturn:(UITextField *)textField 17 { 18 // When the user presses return, take focus away from the text field so that the keyboard is dismissed. 19 NSTimeInterval animationDuration = 0.30f; 20 [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; 21 [UIView setAnimationDuration:animationDuration]; 22 CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height); 23 self.view.frame = rect; 24 [UIView commitAnimations]; 25 [textField resignFirstResponder]; 26 return YES; 27 } 28 29 - (void)textFieldDidBeginEditing:(UITextField *)textField 30 { 31 CGRect frame = textField.frame; 32 int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216 33 NSTimeInterval animationDuration = 0.30f; 34 [UIView beginAnimations:@"ResizeForKeyBoard" context:nil]; 35 [UIView setAnimationDuration:animationDuration]; 36 float width = self.view.frame.size.width; 37 float height = self.view.frame.size.height; 38 if(offset > 0) 39 { 40 CGRect rect = CGRectMake(0.0f, -offset,width,height); 41 self.view.frame = rect; 42 } 43 [UIView commitAnimations]; 44 }
另外我自己做了一点修改:
在实际用的时候,键盘消失原来的控件并没有回归都原来的位置,而是上移了20个像素,我估计是因为顶部Bar的原因,只要将22行代码改成如下就可以了:
CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。