方法1. 使用<UITextFeildDelegate>,使用的UITextField示例 设置其Delegate为self,点击return按钮隐藏键盘。实现函数如下:
   - (BOOL)textFieldShouldReturn:(UITextField *)textField  
   {   
         [textField resignFirstResponder];  
         return YES;
   }  
 
 
方法2. 点击界面的其它空白地方隐藏
     由于UIViewController是继承自UIResponder的,所以可以覆写- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;这个开始触摸的方法来取消第一响应者,代码如下:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

[_tfPassword resignFirstResponder];

[_tfUsername resignFirstResponder];

}

 
以上两种方法是初学iOS的时候使用的。
 
3. 最好还是使用NotificationCenter的方法比较好,能获取键盘高度等详细信息
  1. #import "ViewController.h"
  2.  
  3. @interface ViewController ()
  4. @property (weak, nonatomic) IBOutlet UITextField *tfTest;
  5. @property (weak, nonatomic) IBOutlet UITextField *tfTest2;
  6. @end
  7.  
  8. @implementation ViewController
  9. - (void)viewDidLoad {
  10. [super viewDidLoad];
  11. }
  12.  
  13. - (void)viewDidappear:(BOOL)animated
  14. {
  15. [super viewDidDisappear:animated];
  16. //移除键盘监听消息
  17. [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillShowNotificationobject:nil];
  18. [[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillHideNotificationobject:nil];
  19. //注册键盘监听消息
  20. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyShow:)name:UIKeyboardWillShowNotification object:nil];
  21. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyHide:)name:UIKeyboardWillHideNotification object:nil];
  22. }
  23.  
  24. //弹出键盘消息响应
  25. - (void)keyShow:(NSNotification *)no
  26. {
  27. NSLog(@"keyShow");
  28.  
  29. NSDictionary *dic = [no valueForKey:@"userInfo"];
  30. CGFloat heightKeyboard = [[dicvalueForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height;
  31. /*
  32. NSDictionary *userInfo = [aNotification userInfo];
  33.  
  34. NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
  35.  
  36. CGRect keyboardRect = [aValue CGRectValue];
  37.  
  38. */
  39. UIView *firstResponderView = [self getFirstResponderView];
  40. CGFloat distanceToBottom = self.view.frame.size.height -CGRectGetMaxY(firstResponderView.frame);
  41.  
  42. //动画
  43. if(distanceToBottom < heightKeyboard){
  44. CGRect frame = self.view.frame;
  45. frame.origin.y = -(heightKeyboard - distanceToBottom);
  46. [UIView animateWithDuration:0.3f animations:^{
  47. [self.view setFrame:frame];
  48. } completion:^(BOOL finished) {
  49. }];
  50. }
  51. }
  52.  
  53. //关闭键盘消息响应
  54. - (void)keyHide:(NSNotification *)no
  55. {
  56. NSLog(@"keyHide");
  57. CGRect frame = self.view.frame;
  58. frame.origin.y = 0;
  59.  
  60. //动画
  61. [UIView animateWithDuration:0.3f animations:^{
  62. [self.view setFrame:frame];
  63. } completion:^(BOOL finished) {
  64. }];
  65. }
  66.  
  67. //点击背景区域自动隐藏键盘
  68. - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  69. {
  70. UIView *firstResponderView = [self getFirstResponderView];
  71. [firstResponderView resignFirstResponder];
  72. }
  73.  
  74. //获取当前焦点所在的控件
  75. - (UIView *)getFirstResponderView{
  76. UIWindow *keyWindow = [[UIApplication sharedApplication]keyWindow];
  77. UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
  78. return firstResponder;
  79. }
  80.  
  81. - (void)didReceiveMemoryWarning {
  82. [super didReceiveMemoryWarning];
  83. }
  84. @end
  85.  
  86.   

  

 

PS://获取当前编辑框相对于self.view的位置

CGRect frameRelative = [firstResponderView convertRect:firstResponderView.bounds toView:self.view];

iOS对键盘的处理的更多相关文章

  1. 【iOS自定义键盘及键盘切换】详解

    [iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...

  2. iOS 收起键盘的几种方式

    iOS 收起键盘的几种方式 1.一般的view上收起键盘 // 手势 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ ...

  3. ios 自定义键盘

    由于项目需要,需要自定义键盘.ios系统键盘会缓存键盘输入,并保存在系统目录下的文件里,并且是明文存储,存在帐号密码泄漏风险.在别人代码基础上修改了下,美化了下界面,去掉了字符输入,加了点击特效,截图 ...

  4. IOS 回收键盘通用代码

    感觉IOS的键盘回收好累,所以封装了一个通用一点的方法 -(IBAction)spbResignFirstResponder:(id)sender { // NSLogObj(sender); if ...

  5. iOS学习——键盘弹出遮挡输入框问题解决方案

    在iOS或Android等移动端开发过程中,经常遇到很多需要我们输入信息的情况,例如登录时要输入账号密码.查询时要输入查询信息.注册或申请时需要填写一些信息等都是通过我们键盘来进行输入的,在iOS开发 ...

  6. iOS 解决键盘挡住输入框的问题

    iOS开发中经常会用到输入框UITextField,所以也常会遇到键盘挡住输入框而看不到输入框的内容. 在这里记录一种方法,用UITextField的代理来实现View的上移来解决这个问题. 首先设置 ...

  7. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。

    js 监听ios手机键盘弹起和收起的事件 /* js 监听ios手机键盘弹起和收起的事件 */ document.body.addEventListener('focusin', () => { ...

  8. ios处理键盘的大小

    iOS的键盘有几个通知 UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotificat ...

  9. iOS数字键盘自定义按键

    UIKeyboardTypeNumberPad 数字键盘自定义按键 最近做一个搜索用户的功能,这里使用了UISearchBar.由于搜索的方式只有手机号码,所以这里的键盘要限制为数字输入,可以这么做: ...

随机推荐

  1. ListDefinition Tips

    1)ListTemplate.Type位数不能太长(最长7位),否则启用内容类型后,列表设置中会抛异常. <ListTemplate Name="List1" Type=&q ...

  2. iOS之处理不等高TableViewCell的几种方法

    课题一:如何计算Cell高度 方案一:直接法(面向对象) 直接法,就是把数据布局到Cell上,然后拿到Cell最底部控件的MaxY值. 第一步:创建Cell并正确设置约束,使文字区域高度能够根据文字内 ...

  3. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  4. Mac常用shell命令

    几个常用命令 pwd 命令名称:pwd 英文:print work directory 描述:查看当前工作目录的完整路径 ls 英文全称: list 描述:列出目录下的内容清单 常用参数: -l:列出 ...

  5. 第一课 ionic 日志输出

    写程序的首要问题就是要打印日志,因为只有将日志输出才能真正了解程序的运行状态. 日志输出有两种方式 1.console输出 console.log("测试一下") console. ...

  6. Lucene 时间排序

    在Lucene4.4中,想要实现搜索结果按照时间倒序的效果:如果两个文档得分相同,那么就按照发布时间倒序排列:否则就按照分数排列.这种效果在Lucene4.6中实现起来极其简单,直接利用search接 ...

  7. 《javascript权威指南》读书笔记——第一篇

    <javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...

  8. 如何给不支持新特性的浏览器打补丁(让老版本IE兼容新特性)

    一个非常棒的 JavaScript 框架叫做 Modernizr(http://www.modernizr. com),用于向缺少 HTML5/CSS3特性支持的浏览器打补丁.由 Alexander ...

  9. ns3重要类

    1. simple-ref-count 递归模板,使得通过定义T:SimpleRefCount<T>使得T类都具有计数功能 template <typename T, typenam ...

  10. ajax参数设置略解

    通过ajax可以直接由页面访问到服务器.做到不刷新页面,就能刷新数据,为开发带来很大的便利. 1.ajax方式的参数及其功能: $.ajax({ type : "POST", // ...