【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

时间:2023-01-10 06:26:04

本话来介绍UIKit框架中的组件UITextField。

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

  UItextField(文本框)和Label看起来看像,但是文本框是可以编辑的。在UI中使用文本框要注意,因为在模拟器上面输入文字是可以使用电脑键盘的,而在真机上,用户只能使用虚拟键盘,所以要注意。另外文本框中的文字大小、颜色等等也是可以设置的,就和在Label中一样。

  每次我们点击文本框开始输入内容的时候,文本框会成为页面上的first responder,这个时候虚拟键盘就会从底部滑出,配合我们的输入,就好像网页开发中的文本框获得了焦点一样。你可以使用方法becomeFirstResponder指定某个对象成为当前页面的first responder。如果要让键盘消失,我们只需要让文本框重新成为first responder,使用方法rsignFirstResponder。

  在我们输入结束的时候,点击键盘上的Return键(当然,这个键显示的文字是可以编辑的)会触发代理的方法textFieldShouldReturn,通常你会在这个方法中写上sender.resignFirstResponder以关闭虚拟键盘。

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

当编辑结束后也就是上面说的textField重新成为first responder时,会调用另一个代理方法textFieldDidEndEditing。

UITextField也可以作为一个UI的控制器,就像按钮一样,我们可以通过按钮来触发target和action,也可以通过一个UITextField来触发一些action和target,只不过触发的events和按钮是不同的。下面来看一下键盘:

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

键盘出现是因为文本框向接口UITextInputTraits协议发送消息,这个协议是UITextField类遵循的。你可以使用协议中的属性来进行设置,比如Return按钮显示的名称、密文输入等等,这些属性也可以在属性检查器中设置。

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

键盘滑出时可能会遮挡页面上的其他视图,我们需要让这些视图适应键盘的位置(尤其是文本框本身),为达到这个目的使用与键盘事件相关的NSNotification。之前我们已经接触过NSNotification了,如上例所示,在消息中心中接收这个NSNotification,然后在选择子对应的方法theKeyboardAppeared中捕获这个NSNotification然后从中提取userInfo中的信息进行相关处理。

下面是UITextField的一些其他属性,非常的有趣

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

比如你可以设置在文字输入很多的时候缩小字体以适应文本框的宽度,但是这个字体不能无限制缩小,如果adjustsFontSizeToFitSidth被设置为true,那么一定要设置minimumFontSize的尺寸。另外可以在文本框中可以加入一些辅助功能,比如说清空输入之类的。