做IOS开发时,难免会遇到输入框被键盘遮掩的问题。上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了。

有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollView )中,然后滚动视图实现输入框不被软键盘覆盖,个人觉得此方案好是好,但是太过麻烦。

有的解决方案是通过一个通知 UIKeyboardDidShowNotification 去实现的,需要用到事件监听,而且需要自己定义并实现“将要开始编辑”与“结束编辑”这两个监听事件中的方法。本人也觉得很麻烦。

参考了很多方法,都不是太理想。自己研究了一下,既然软键盘(Keyboard)出现与否是跟输入框(UITextField)紧密关联的。所以自己找到一个解决方案,没有上述两种方案那么麻烦,只需实现代理UITextFieldDelegate中的三个方法即可。

实现方法:

1)将输入框的代理设置为self

(在lb文件中将输入框的delegate设置为File’s Owner 。或者使用代码textField.delegate = self;

2)将输入框所对应的ViewController.h设置实现了UITextFieldDelegate协议

在ViewController.m文件中实现UITextFieldDelegate的三个方法即可:

[cpp] view plain copy print ?
  1. //开始编辑输入框的时候,软键盘出现,执行此事件
  2. -(void)textFieldDidBeginEditing:(UITextField *)textField
  3. {
  4. CGRect frame = textField.frame;
  5. int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
  6. NSTimeInterval animationDuration = 0.30f;
  7. [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
  8. [UIView setAnimationDuration:animationDuration];
  9. //将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示
  10. if(offset > 0)
  11. self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
  12. [UIView commitAnimations];
  13. }
  14. //当用户按下return键或者按回车键,keyboard消失
  15. -(BOOL)textFieldShouldReturn:(UITextField *)textField
  16. {
  17. [textField resignFirstResponder];
  18. return YES;
  19. }
  20. //输入框编辑完成以后,将视图恢复到原始状态
  21. -(void)textFieldDidEndEditing:(UITextField *)textField
  22. {
  23. self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
  24. }
//开始编辑输入框的时候,软键盘出现,执行此事件
-(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输入框被键盘挡住的解决办法相关推荐

  1. ios 前端时间显示NaN异常解决办法

    ios 前端时间显示NaN异常解决办法 参考文章: (1)ios 前端时间显示NaN异常解决办法 (2)https://www.cnblogs.com/panda-yichen/p/11040196. ...

  2. 网页中层或菜单被Flash挡住的解决办法

    网页中层或菜单被Flash挡住的解决办法 网页层或菜单经常被flash盖住部分看不到,影响美观,在flash代码中加入以下代码: <param name="wmode" va ...

  3. 下拉菜单被表单、图片、FLASH挡住的解决办法

    设置Flash的参数: <param name="wmode" value="opaque"> <object classid="c ...

  4. h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法

    h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法 参考文章: (1)h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法 (2)https://www.cnblogs.co ...

  5. 【关于IDEA工具中Junit测试无法读取键盘录入的解决办法】

    关于IDEA工具中Junit测试无法读取键盘录入的解决办法 一.问题背景 二.解决办法 一.问题背景 许多初次使用IDEA 这款开发工具的朋友有可能会遇到这样一个问题,在eclipse上可以正常运行的 ...

  6. html 输入框键盘遮挡,解决输入框被键盘挡住的问题

    ①:上面的效果图随意摆放的input输入框唤起键盘的对齐问题,下面上代码: *{margin:0;padding:0;} html,body{width:100%} .box{width:100%} ...

  7. 新浪微博oauth2.0弹出验证dialog中输入框被输入法覆盖的解决办法

    关于新浪微博oauth2.0弹出dialog验证时,输入框会被输入法覆盖的问题的一个解决办法. 方法一:      由于我在做项目支持新浪微博的时候是直接引入新浪SDK源文件的(网上有很多相关的文章, ...

  8. Xcode中iOS项目目标变为Mac的解决办法

    之前改过名称的一个项目,目标设备是iPhone,但是在另一台Mac上打开该工程后发现,竟然变为了Mac项目,而且无法编译和运行. 解决办法是打开Scheme管理 然后在当前Scheme基础上复制一个新 ...

  9. iOS CMPedometer 获取计步数据异常解决办法

    使用 if ([CMPedometer isStepCountingAvailable]&& [CMPedometer isDistanceAvailable]) {if (!_Ped ...

最新文章

  1. 导致甲骨文裁员的原因有哪些?
  2. ACR2010_MRI骶髂关节炎症与CTX-II变化以及TNF拮抗剂治疗过程中全身炎症改变相关...
  3. 为什么说一次一密加是密抗窃听无条件安全的?
  4. 【算法分析】实验 4. 回溯法求解0-1背包等问题
  5. Crash 的文明世界
  6. oracle之三手工不完全恢复
  7. UnityShader2:Shader与材质
  8. 单选框_flutter Radio 单选框
  9. 主题:小菜一碟可以怎样说
  10. Windows 注册表清理
  11. Java多线程编程核心技术 (pdf完整版)
  12. Blocking Queue三种加入队列方法对比
  13. python画图星空_编程从绘画开始:用Python画一幅《月夜星空》图
  14. git文件夹不区分大小写_Git区分大小写并且您的文件系统可能不区分大小写-Windows上奇怪的文件夹合并
  15. Spark PageRank
  16. ROC曲线的通俗理解
  17. IT培训班真的有用吗?IT培训包就业是真的吗?
  18. C语言验证黑洞数6174
  19. 20145124 陈威名 第九周学习总结
  20. 软件联调测试报告范例,系统联调测试的报告(视频会议).doc

热门文章

  1. 环境变量Path和classpath的作用是什么?
  2. 你好,放大器——失调电压漂移(Offset Voltage Drift)
  3. python多线程爬取段子_Python爬虫实例-多线程爬虫糗事百科搞笑内涵段子
  4. Unity 基础 - 预设
  5. 为什么我们决定重构 Uber 司机端
  6. python打印一个空心等腰三角形,再内接一个空心三角形
  7. c语言随机漫步,【Embedding】Node2Vec:一种有偏的随机游走
  8. 防摔防尘物资塑料周转箱 海格里斯加厚储物仓库物流周转箱
  9. RGB颜色值与十六进制颜色码怎么相互转换?
  10. 微软的文本转语音服务,已经听不出是机器了