如何避免ios 键盘遮挡挡UITextField的解决方案

查看:5300|回复:6
助理工程师
实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。
- (void)keyboardWillShow:(NSNotification *)noti
& && &&&//键盘输入的界面调整& && &&&
& && &&&//键盘的高度
& && &&&float height = 216.0;& && && && && &
& && &&&CGRect frame = self.view.& && &&&
& && &&&frame.size = CGSizeMake(frame.size.width, frame.size.height - height);& && &&&
& && &&&[UIView beginAnimations:@&Curl&context:nil];//动画开始& && && &
& && &&&[UIView setAnimationDuration:0.30];& && && &&&
& && &&&[UIView setAnimationDelegate:self];& && && &
& && &&&[self.view setFrame:frame];& && && &
& && &&&[UIView commitAnimations];& && && &
- (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;& && &&&
& & [UIView beginAnimations:@&ResizeForKeyboard& context:nil];& && &&&
& & [UIView setAnimationDuration:animationDuration];& && &&&
& & CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);& && &&&
& & self.view.frame =& && &&&
& & [UIView commitAnimations];& && &&&
& & [textField resignFirstResponder];
& & return YES;& && &&&
- (void)textFieldDidBeginEditing:(UITextField *)textField
& && &&&CGRect frame = textField.
& && &&&int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
& && &&&NSTimeInterval animationDuration = 0.30f;& && && && && &
& && &&&[UIView beginAnimations:@&ResizeForKeyBoard& context:nil];& && && && && &
& && &&&[UIView setAnimationDuration:animationDuration];
& && &&&float width = self.view.frame.size.& && && && && &
& && &&&float height = self.view.frame.size.& && &&&
& && &&&if(offset & 0)
& && && && && & CGRect rect = CGRectMake(0.0f, -offset,width,height);& && && && && &
& && && && && & self.view.frame =& && &&&
& && &&&}& && &&&
& && &&&[UIView commitAnimations];& && && && && &
助理工程师
请问楼主是不是就是键盘和输入框都移动位置?
如果是这样,我有几个问题:
1. 怎么判断键盘盖住了输入框?
2. 是不是只有盖住的情况下才移动?
3. 是不是其他控件也移动?
助理工程师
请问楼主是不是就是键盘和输入框都移动位置?
如果是这样,我有几个问题:
1. 怎么判断键盘盖住了输入框?&&答:有判断的,根据位置,
2. 是不是只有盖住的情况下才移动? 答:是的
3. 是不是其他控件也移动?答:是整体上移的,你可以试一下就知道了。
- (void)textFieldDidBeginEditing:(UITextField *)textField方法里有判断是否需要上移。
助理工程师
各位还没解决的,可以去我博客看看,不用第三方库就能解决输入框被挡住的问题:
自己先学习一下。
日,在爱创课堂学习JavaScript第三天,每天都是在晚上学习JavaScript的基础知识,虽然总的时间才几个小时 ,但是这几个小时中,我学到了以前我很多不懂得知识,张容铭老师的讲解非常详细,正是我所希望的讲解方法,毕竟很多人对编程中的很多东西都是不认识的,比如说英文单词,张荣铭老师都会做一下讲解,这让我听着很舒服,比平常在教室中听老师讲课精彩得多了,也非常容易懂,能够在众多的学习网中接触到张老师的讲解,也挺幸运的,虽然现在没有能力去看他的收费项目,但是这些基础知识也弥补了我很多不懂得疑问。
如果大家有兴趣不妨去看一下。比如:爱创课堂王鹏飞老师的相关前端开发基础视频教学和张荣铭WEB前端技术基础视频教学。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)uitextfield的代理方法,怎么处理输入文本框被键盘遮挡_百度知道
uitextfield的代理方法,怎么处理输入文本框被键盘遮挡
我有更好的答案
实现方法:
1)将输入框的代理设置为self
(在lb文件中将输入框的delegate设置为File’s Owner 。或者使用代码textField.delegate =
2)将输入框所对应的ViewController.h设置实现了UITextFieldDelegate协议
在ViewController.m文件中实现UITextFieldDelegate的三个方法即可:[cpp] view plaincopy//开始编辑输入框的时候,软键盘出现,执行此事件
-(void)textFieldDidBeginEditing:(UITextField *)textField
CGRect frame = textField.
int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
NSTimeInterval animationDuration = 0.30f;
[UIView beginAnimations:@&ResizeForKeyboard& context:nil];
[UIView setAnimationDuration:animationDuration];
//将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示
if(offset & 0)
self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
[UIView commitAnimations];
//当用户按下return键或者按回车键,keyboard消失
-(BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
return YES;
//输入框编辑完成以后,将视图恢复到原始状态
-(void)textFieldDidEndEditing:(UITextField *)textField
self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
方法很简单吧?请注意一定不要忘记设置输入框的代理delegate哦
资深电脑人
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 reactnative键盘遮挡 的文章

 

随机推荐