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

简介: 本话来介绍UIKit框架中的组件UITextField。  UItextField(文本框)和Label看起来看像,但是文本框是可以编辑的。

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


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

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

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


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

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


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


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

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


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

目录
相关文章
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
270 0
iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
|
iOS开发
IOS——UITextField自动适应键盘弹出
IOS——UITextField自动适应键盘弹出
138 0
|
iOS开发
iOS UITextField rightView覆盖clearButton的解决办法
iOS UITextField rightView覆盖clearButton的解决办法
511 0
|
iOS开发
iOS UITextField(编辑框)
UITextField属性 0.enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的。
1129 0
iOS UITextField 使用与方法解读
iOS UITextField 使用与方法解读
227 0
|
数据安全/隐私保护 iOS开发
IOS Swift3 UITextField 实现密码的显示与隐藏切换
        最近做项目遇到一个需要做密码的显示与隐藏功能,简单从功能上讲是比较简单的,但是,ios有个恶心的BUG,就是在切换显示密码后再隐藏密码时输入就被清空了,这个非常不友好,为了解决这个问题,我在网上找了相关文章,得到了一些启发,解决了这个问...
1366 0
|
前端开发 API
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记4 MVC enum Tuple Dictionary
 回顾一下我们上一话中的代码: @IBAction func operate(sender: UIButton) { let operation = sender.
771 0
|
前端开发 iOS开发
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC
   继续上一话中的计算器Demo,上一话讲到类必须被初始化,类中的属性也必须被初始化,所以你不能只声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么只有声明而不需要初始化呢,这是因为它的类型依旧是一个optional,在你初始化之前已经被赋值为nil了,这也就是为什么你不需要再初始化它的原因。
844 0
|
Unix iOS开发
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述
  首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发。
1021 0