- 论坛徽章:
- 0
|
打开键盘遮住View的问题解决方法-IOS开发
默认情况下打开键盘会遮住下面的view,带来一点点困扰,不过这不是什么大问题,我们使用点小小的手段就可以解决。
首先我们要知道键盘的高度是固定不变的,不过在IOS 5.0 以后键盘的高度貌似不是216了,不过不要紧,我们调整调整就是了:
iPhone
ipad
竖屏(portrait)
216
264
横屏(landScape)
140
352
我们采取的方法就是在textField(有可能是其他控件)接收到弹出键盘事件时把self.view整体上移216px了(我们就以iPhone竖屏为例了)。
有关View的frame,origin,size之类的知识点不懂的请参看我的另一篇博文:<<有关View的几个基础知识点>>
首先我们要设置textField的代理,我们就设为当前控制器了。
textField,delegate=self;
然后我们在当前控制器实现下面三个委托方法:- 01.- (void)textFieldDidBeginEditing:(UITextField *)textField
-
- 02.{ //当点触textField内部,开始编辑都会调用这个方法。textField将成为first responder
-
- 03. NSTimeInterval animationDuration = 0.30f;
-
- 04. CGRect frame = self.view.frame;
-
- 05. frame.origin.y -=216;
-
- 06. frame.size.height +=216;
-
- 07. self.view.frame = frame;
-
- 08. [UIView beginAnimations:@"ResizeView" context:nil];
-
- 09. [UIView setAnimationDuration:animationDuration];
-
- 10. self.view.frame = frame;
-
- 11. [UIView commitAnimations];
-
- 12.}
- 复制代码
复制代码- 01.- (BOOL)textFieldShouldReturn:(UITextField *)textField
-
- 02.{//当用户按下ruturn,把焦点从textField移开那么键盘就会消失了
-
- 03. NSTimeInterval animationDuration = 0.30f;
-
- 04. CGRect frame = self.view.frame;
-
- 05. frame.origin.y +=216;
-
- 06. frame.size. height -=216;
-
- 07. self.view.frame = frame;
-
- 08. //self.view移回原位置
- 09. [UIView beginAnimations:@"ResizeView" context:nil];
-
- 10. [UIView setAnimationDuration:animationDuration];
-
- 11. self.view.frame = frame;
-
- 12. [UIView commitAnimations];
-
- 13. [textField resignFirstResponder];
-
- 14.}
- 复制代码
复制代码 |
|