解决思路:有时用户编辑输入框时,键盘会遮挡输入框,这时候只要将视图整体上移键盘的高度即可,编辑完成后再将视图下移键盘的高度恢复正常显示。

【方法1】

实现UITextField代理UITextFieldDelegat的两个方法textFieldShouldBeginEditing和textFieldShouldEndEditing,分别在开始输入和结束输入时,将UIView上移或下移恢复。

代码:

.h文件

@interface ViewController : UIViewController<UITextFieldDelegate>@property (weak, nonatomic) IBOutlet UITextView *textField;@end

.m文件

设置UITextView实例的代理:

_textField.delegate=self

实现代理方法:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{NSTimeInterval animationDuration=0.30f;[UIView beginAnimations:@"ResizeForKeyboard" context:nil];[UIView setAnimationDuration:animationDuration];float width = self.view.frame.size.width;float height = self.view.frame.size.height;//上移n个单位,按实际情况设置CGRect rect=CGRectMake(0.0f,-130,width,height);self.view.frame=rect;[UIView commitAnimations];return YES;
}- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{NSTimeInterval animationDuration=0.30f;[UIView beginAnimations:@"ResizeForKeyboard" context:nil];[UIView setAnimationDuration:animationDuration];float width = self.view.frame.size.width;float height = self.view.frame.size.height;//上移n个单位,按实际情况设置self.view.frame = CGRectMake(0.0f, 130, width, height);[UIView commitAnimations];return YES;
}

【方法2】(推荐)

注册键盘弹出和关闭的系统通知,对视图进行整体移动

1、在viewDidLoad中注册通知:

- (void)viewDidLoad {[super viewDidLoad];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

2、实现上面两个通知对应的两个方法

-(void)keyboardWillShow:(NSNotification*)notification
{NSDictionary *info = [notification userInfo];//获取键盘的size值CGRect _keyBoard = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];//动画时间NSTimeInterval animationDuration =[[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];//上移n个单位,按实际情况设置[UIView animateWithDuration:animationDuration animations:^{CGRect rect = CGRectMake(0.0f,-_keyBoard.size.height,self.view.frame.size.width,self.view.frame.size.height);self.view.frame=rect;}];}- (void)keyboardWillHide:(NSNotification *)notification
{//动画时间NSDictionary *info = [notification userInfo];NSTimeInterval animationDuration =[[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];//还原输入view位置[UIView animateWithDuration:animationDuration animations:^{self.view.frame = CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height);}];
}

3、在dealloc中注销通知监听

- (void)dealloc{[[NSNotificationCenter defaultCenter] removeObserver:self];
}

iOS解决键盘阻挡输入框相关推荐

  1. iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 (Swift)

    最近在项目中需要解决苹果系统输入法遮挡输入框的问题,预期结果为: 若键盘弹出后会遮挡输入框,则输入框随键盘弹起上移,输入法切换时输入框始终保持在距键盘上方 4pt 处; 若键盘弹出后不会遮挡输入框,但 ...

  2. Keyboard 软键盘阻挡输入框爬坑指南

    导读: 日常开发中我们经常会用到EditText输入框,但有时我们的输入框会出现被软键盘界面阻挡,那么我们就会想到设置android:windowSoftInputMode属性 但是,当我们用的正爽的 ...

  3. 仿QQ空间登录,解决键盘挡住输入框的问题

    我们在开发Android应用中,登录和注册界面是少不了的,往往在做登录注册的时候如果给界面加一个LOGO,就有可能把用户名和密码框放在手机屏幕的中间或底部,这样当软键盘弹出的时候,就有可能挡住输入框( ...

  4. UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)

    进入本文之前建议你认真读一读我的另一篇博文:UIControl IOS控件编程 这样会起到事半功倍效果. 为什么要看另一篇关于UIControl的文章呢?因为UITextField继承自UIContr ...

  5. flutter - 使用 SingleChildScrollView() 解决键盘遮挡输入框的问题

    写好了,感觉可好 点击输入框,输入内容时发现如下,键盘遮挡了输入框 使用 SingleChildScrollView 解决遮挡问题, 就是让它滚动起来 直接使用 SingleChildScrollVi ...

  6. ios 表情符号 键盘_iOS输入框过滤表情,处理自带键盘无法输入

    本片分两部分 1.使用正则表达式过滤表情 2.处理苹果自带键盘无法输入汉字问题 先记录下,后面完善: override func viewDidAppear(_ animated: Bool) { s ...

  7. React-native键盘遮挡输入框问题的解决

    2016年10月25日更新: 现在有一个更准确一点的做法是用一个View包裹住TextInput,然后通过该View的onLayout方法获取该输入框的y轴位置,再减去一个适当的高度去处理scroll ...

  8. 解决h5底部输入框在ios被软键盘顶飞 软键盘消失还下不来

    好吧,其实不是顶飞,准确点说应该是h5页面fiexed定位在底部的输入框在ios软键盘弹起的时候软键盘跟输入框有时会有一段悬空的距离,无法紧贴.在安卓机子上则没有这样的情况. 解决方法是通过h5的sc ...

  9. iOS键盘遮挡输入框,输入区域自动上移

    在iOS开发过程当中,遇到关于键盘遮挡输入框的问题,经过网络参考与实践,总结如下: 登录窗口,上下放置两个UITextField,一个用户名,一个密码,放置的在屏幕下方1/3处,当点击用户名时,自动弹 ...

最新文章

  1. 2022-2028年中国油气勘探工程产业研究及前瞻分析报告
  2. 干货 | 走进Node.js之启动过程剖析
  3. JavaWeb基础—数据库连接池DBCP、C3P0
  4. 基于Elasticsearch实现搜索建议
  5. 剑指Offer #07 斐波那契数列(四种解法)| 图文详解
  6. 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
  7. 半正定矩阵的判定方法_线性代数30——正定矩阵和最小值
  8. windows下jenkins slave 搭建
  9. 左边任务栏_Windows10 系统桌面底部的任务栏在侧边了怎么还原
  10. STM32一体化步进电机驱动器控制步进电机
  11. C语言经典题目50题
  12. 第一道web类CTF题——一起来撸猫
  13. PS薄纱飘带字体制作
  14. Motion-based counter-measures to photo attacks in face recognition
  15. LSC LensShading Correct
  16. C-kermit安装方法
  17. 【旧资料整理】8086汇编 鼠标操作
  18. JARVISOJ RE
  19. openmeetings 安装ssl
  20. switch c语言格式,switch语句格式是什么?

热门文章

  1. 浅析对象访问属性的.和[]方法区别
  2. angularjs 学习笔记 简单基础
  3. 谷歌推出情境感知API
  4. 零代价修复海量服务器的内核缺陷——UCloud内核热补丁技术揭秘
  5. mybatis-错误记录java.lang.ExceptionInInitializerError
  6. 关于程序员的政治(转)
  7. Linux下Memcache服务器端的安装
  8. 如何在DataGrid里面使用动态图形表示数字
  9. 使用docker制作hexo镜像
  10. 使用GoAccess分析Nginx日志