转自:http://my.oschina.net/hmj/blog/99489

在每一个IOS应用中,几乎不可避免的要进行文本输入操作,例如要求用户填写登陆注册信息,进行话题的评论回复,等等。用到的文本输入组件有UITextField,UITextView,对于这两个组件的相关属性和方法想必大家都很熟悉,但貌似对于键盘的显示或隐藏过程貌似常常不是很清楚,其实本人也是一知半解,所以趁此做简单的总结,基本上以下描述出自于官方的文档,并没有什么更改。

1.开启键盘面板

当用户触击某一个view时,系统会自动指定该view为第一响应对象(first responser),(关于第一响应对象的我们估计可以把它看做一个标志位,每个贴上该标记的对象都能成为first responser,这样可能要好理解些)当某个包含了可编辑文本的view(UITextField或UITextView)成为第一响应对象后,该view会为文本输入开启一个"编辑会话"(editing session),之后该view会告知系统去开启并显示键盘,如果当前键盘处于隐藏状态,那么它会根据当前设备的旋转方向,自动调整并从application的底部以滑动动画形式出现,这通常都是我们看到并已熟知的键盘显示方式;如果当前键盘已处于显示状态,由于第一响应对象这个标记已被设置到当前的view上,所以键盘输入也被重定向到该view上了。

因为当一个view设置第一响应对象后,键盘会自动显示,通常情况下我们不用做其它任何事情。但是,有时我们可以调用可编辑文本view的becomeFirstResponder方法,来显示键盘。

如某一UITextField类的名为theTextField对象可调用以下方法:

1 [theTextField becomeFirstResponder];

在可编辑view上调用该方法达到的效果,与用户触击该view的效果是一致的,首先会使该view成为第一响应对象,之后键盘被调用显示。

如果在应用中某一功能上需要同时管理几个文本输入,最后的做法是跟踪当前是哪一个view为第一响应对象,因为在之后的操作中我们可以选择性的关闭键盘。

2.关闭键盘

以上,我们可以看到,键盘的显示为IOS系统的自发行为,我们在程序上不用做任何处理,但关闭键盘的处理却于此相反:系统不会自动关闭键盘,在应用中我们自己要负责在合适的时间关闭键盘。其实这个洛是显而易见的,开启键盘的目的是为了输入文本,但关闭键盘的逻辑却因具体应用的处理逻辑的不同而不同。但通常情况下也只是在用户的某一行为下才会关闭键盘,例如用户触击了键盘的“Return”和“Done”按钮;或者是在填完并提交一个表单后要关闭键盘,所有的这些有IOS基本的用户界面行为设置,也有我们的应用功能决定的用户界面设置。

要关闭键盘,可以调用当前是第一响应对象的某一个包含可编辑文本view的resignFirstResponder方法。从字面意义上来看,resignFirstResponder与becomeFirstResponder方法的处理逻辑和作用是相反的,调用了resignFirstResponder的view会注销其第一响应对象的状态,并结束之前开启的“编辑会话”,并关闭键盘。也就是说,假如之前的theTextField对象当前为第一响应对象,要关闭键盘可以调用以下方法:

1 [theTextField resignFirstResponder];

3.First Responser对象

对于first response对象,其实是在Application中那个第一个接受系统事件的对象,如键盘事件(key events),动作事件(motion events),以及action消息。在此不做介绍。

注:描述于IOS5.1下

IOS 键盘的显示与关闭相关推荐

  1. ios键盘done中文_IOS_IOS关闭键盘的方法,首先输入完成后按键盘上的done - phpStudy...

    IOS关闭键盘的方法 首先输入完成后按键盘上的done关闭键盘 首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text In ...

  2. android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究

    在android中,常常会和输入法的软件键盘交互.在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式. 该属性提供了Activit ...

  3. 使用Swift触摸任意位置以关闭iOS键盘

    本文翻译自:Close iOS Keyboard by touching anywhere using Swift I have been looking all over for this but ...

  4. Android手动控制软键盘的开启和关闭,判断软键盘是否显示;

    工具类,拿走就能用: import android.annotation.TargetApi; import android.app.Activity; import android.content. ...

  5. ios键盘done中文_关于IOS键盘的一些调用心得与坑

    以下是关于自己在项目中关于调用IOS键盘以及监听个别按键时的一些心得: 一.键盘打开方式 UITextField *field = [[UITextField alloc]  initWithFram ...

  6. Xamarin iOS教程之显示和编辑文本

    Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的.它就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些应用程序要表达的 ...

  7. 实现输入界面适应键盘的显示和隐藏事件

    2019独角兽企业重金招聘Python工程师标准>>> 方法一.设置activity的windowSoftInputMode属性 在AndroidManifest配置activity ...

  8. 如何将ios键盘返回由英文设置成中文

    ios键盘默认中文键盘显示中文名称,英文显示英文名称.由于需求需要,点击搜索框默认显示数字键盘+搜索中文.设置如下: (1) searchTextField.keyboardType = UIKeyb ...

  9. Arduino智能闹钟设计(8x8矩阵键盘+LCD显示)

    Arduino智能闹钟设计(8x8矩阵键盘+LCD显示+蜂鸣器歌曲) 作者:STCode(公众号同名) 1.效果描述: 本设计基于Arduino Nano控制器,主要功能为定时闹钟和环境温湿度显示,使 ...

最新文章

  1. 手工管理和计算机管理,ERP系统管理与传统的手工管理之间的区别
  2. 内存的静态分配和动态分配的区别【转】
  3. 多核处理器_英特尔十代酷睿i5-10400大战R5 3600,到底谁是千元处理器一霸?
  4. linux vi 上下左右 ab,【Linux】Ubuntu vi 上下左右变ABCD及 apt-get install报错问题解决方法...
  5. 电商夏季促销海报设计PSD模板,分解教你如何设计
  6. 直接在线查看github里的jupyter notebook
  7. maven编译报程序包不存在_宝马730i空调不制冷,报冷却剂压缩机当前存在故障
  8. redis演练(1) 搭建redis服务
  9. 解决Conda install tensorflow弹窗Python.exe已经停止工作的问题
  10. 多传感器融合方法综述
  11. 华为“鸿蒙”所涉及的微内核到底是什么?一文带你认识微内核
  12. 乐迪智能陪伴机器人_乐迪智能陪伴机器人app下载|乐迪智能iphone版下载 v2.8.5 - 跑跑车苹果网...
  13. 企业微信机器人脚本python_python3 企业微信机器人发送图片
  14. Python中json.loads()无法解析单引号字符串问题的两种解决方法
  15. 关于取整符号(二叉树具有n个结点的m次树的最小高度⌈logₘ(n(m-1)+1)⌉)
  16. 计算机组成原理_主存与CPU的连接
  17. DJ1 计算机系统概述
  18. 工作经验分享-vivo链路监控
  19. 数据分析--数据合并
  20. 勇探计算机城堡教案反思,【生本探究】畅游拼音王国——包头市第一实验小学拼音验收通关活动纪实...

热门文章

  1. sql 四舍五入保留两位小数
  2. CRM系统如何做好客户管理和维护
  3. css中首字母下沉_CSS中的经典版式效果:基本首字母大写和首字下沉
  4. 解决谷歌浏览器和360浏览器 input 自动填充淡黄色背景色的问题
  5. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)
  6. linux 性能测试 antutu,安兔兔评测Linux版正式上线 Windows版蓄势待发
  7. C++事件的建立和使用SetEvent,ResetEvent
  8. ROG 新款枪神 7 Plus 超竞版 评测 怎么样
  9. 伯克利 计算机 音乐,想去美国伯克利音乐学院学音乐?你要的都在这里!
  10. 余额宝安全吗?你们都存了多少?