ios输入框被键盘挡住的解决办法
做IOS开发时,难免会遇到输入框被键盘遮掩的问题。上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了。
有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollView )中,然后滚动视图实现输入框不被软键盘覆盖,个人觉得此方案好是好,但是太过麻烦。
有的解决方案是通过一个通知 UIKeyboardDidShowNotification 去实现的,需要用到事件监听,而且需要自己定义并实现“将要开始编辑”与“结束编辑”这两个监听事件中的方法。本人也觉得很麻烦。
参考了很多方法,都不是太理想。自己研究了一下,既然软键盘(Keyboard)出现与否是跟输入框(UITextField)紧密关联的。所以自己找到一个解决方案,没有上述两种方案那么麻烦,只需实现代理UITextFieldDelegate中的三个方法即可。
实现方法:
1)将输入框的代理设置为self
(在lb文件中将输入框的delegate设置为File’s Owner 。或者使用代码textField.delegate = self;
2)将输入框所对应的ViewController.h设置实现了UITextFieldDelegate协议
在ViewController.m文件中实现UITextFieldDelegate的三个方法即可:
- //开始编辑输入框的时候,软键盘出现,执行此事件
- -(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;
- [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);
- }
//开始编辑输入框的时候,软键盘出现,执行此事件
-(void)textFieldDidBeginEditing:(UITextField *)textField
{CGRect frame = textField.frame;int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216NSTimeInterval 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哦
实现效果如下图所示:
ios输入框被键盘挡住的解决办法相关推荐
- ios 前端时间显示NaN异常解决办法
ios 前端时间显示NaN异常解决办法 参考文章: (1)ios 前端时间显示NaN异常解决办法 (2)https://www.cnblogs.com/panda-yichen/p/11040196. ...
- 网页中层或菜单被Flash挡住的解决办法
网页中层或菜单被Flash挡住的解决办法 网页层或菜单经常被flash盖住部分看不到,影响美观,在flash代码中加入以下代码: <param name="wmode" va ...
- 下拉菜单被表单、图片、FLASH挡住的解决办法
设置Flash的参数: <param name="wmode" value="opaque"> <object classid="c ...
- h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法
h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法 参考文章: (1)h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法 (2)https://www.cnblogs.co ...
- 【关于IDEA工具中Junit测试无法读取键盘录入的解决办法】
关于IDEA工具中Junit测试无法读取键盘录入的解决办法 一.问题背景 二.解决办法 一.问题背景 许多初次使用IDEA 这款开发工具的朋友有可能会遇到这样一个问题,在eclipse上可以正常运行的 ...
- html 输入框键盘遮挡,解决输入框被键盘挡住的问题
①:上面的效果图随意摆放的input输入框唤起键盘的对齐问题,下面上代码: *{margin:0;padding:0;} html,body{width:100%} .box{width:100%} ...
- 新浪微博oauth2.0弹出验证dialog中输入框被输入法覆盖的解决办法
关于新浪微博oauth2.0弹出dialog验证时,输入框会被输入法覆盖的问题的一个解决办法. 方法一: 由于我在做项目支持新浪微博的时候是直接引入新浪SDK源文件的(网上有很多相关的文章, ...
- Xcode中iOS项目目标变为Mac的解决办法
之前改过名称的一个项目,目标设备是iPhone,但是在另一台Mac上打开该工程后发现,竟然变为了Mac项目,而且无法编译和运行. 解决办法是打开Scheme管理 然后在当前Scheme基础上复制一个新 ...
- iOS CMPedometer 获取计步数据异常解决办法
使用 if ([CMPedometer isStepCountingAvailable]&& [CMPedometer isDistanceAvailable]) {if (!_Ped ...
最新文章
- 导致甲骨文裁员的原因有哪些?
- ACR2010_MRI骶髂关节炎症与CTX-II变化以及TNF拮抗剂治疗过程中全身炎症改变相关...
- 为什么说一次一密加是密抗窃听无条件安全的?
- 【算法分析】实验 4. 回溯法求解0-1背包等问题
- Crash 的文明世界
- oracle之三手工不完全恢复
- UnityShader2:Shader与材质
- 单选框_flutter Radio 单选框
- 主题:小菜一碟可以怎样说
- Windows 注册表清理
- Java多线程编程核心技术 (pdf完整版)
- Blocking Queue三种加入队列方法对比
- python画图星空_编程从绘画开始:用Python画一幅《月夜星空》图
- git文件夹不区分大小写_Git区分大小写并且您的文件系统可能不区分大小写-Windows上奇怪的文件夹合并
- Spark PageRank
- ROC曲线的通俗理解
- IT培训班真的有用吗?IT培训包就业是真的吗?
- C语言验证黑洞数6174
- 20145124 陈威名 第九周学习总结
- 软件联调测试报告范例,系统联调测试的报告(视频会议).doc