博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 键盘的显示与关闭
阅读量:4933 次
发布时间:2019-06-11

本文共 1608 字,大约阅读时间需要 5 分钟。

在每一个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下

转载于:https://www.cnblogs.com/songfeixiang/p/3733703.html

你可能感兴趣的文章
CLR执行模型与常见的几个概念
查看>>
linux和aix内核参数检查
查看>>
JAVA 注解教程(一)简单介绍
查看>>
zepto源码学习-02 工具方法-详细解读
查看>>
图 - 从零开始实现by C++
查看>>
R & ggplot2 & Excel绘图(直方图/经验分布图/QQ图/茎叶图/箱线图)实例
查看>>
java 入门常识
查看>>
为 iTween 指定特定的回调 : onupdate, oncomplete
查看>>
最小化功能区:显露无遗
查看>>
unity3d Resources.Load动态加载资源
查看>>
Servlet 学习(一)
查看>>
HDU_oj_2049 考新郎
查看>>
Linux学习笔记:使用ftp命令上传和下载文件
查看>>
使用 Object.create实现js 继承
查看>>
zookeeper集群搭建,这一篇就够了
查看>>
【iM_VGA模块】运行 ucgui 演示!
查看>>
Java .class文件反编译后的特殊代码还原
查看>>
一点点linux系统的学习心得
查看>>
11.13 js操作css样式
查看>>
支持向量机
查看>>