在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮能够用来关闭键盘,可是 iPhone 程序中的键盘却没有这样的按钮,不过咱们能够采起一些方法关闭它。例如,咱们能够实现按下 Rerun (有时也是 Done、Research 等)键关闭键盘,或者,更人性化的,轻触背景关闭键盘。spa
一、首先讲一下按下Return键关闭键盘。.net
当按下键盘的 Return 键,会产生一个 Did End On Exit 事件,此时,咱们告诉文本框要放弃控件,因而键盘就消失了。code
假设,咱们已经建立了一个 Single View Application ,并打开 ViewController.xib 文件,在 View 上拖上去了三个 Text Field ,而后,咱们把这三个文本框映射到 ViewController.h 中,名称依次是 firstField、secondField 以及 thirdField 。以下图:事件
在这个基础上,实现轻触 Return 关闭键盘,步骤为:get
(1)在 ViewController.h 中声明一个方法:it
- (IBAction)textFiledReturnEditing:(id)sender;
(2)在 ViewController.m 中实现这个方法:io
-(IBAction)textFiledReturnEditing:(id)sender { [sender resignFirstResponder]; }
所谓 First Responder 指的就是用户当前正在与之交互的控件。当用户使用键盘时,First Responder 就是这个键盘,resignFirstResponder 方法,顾名思义,就是放弃 First Responder 。class
(3)让这三个文本框都映射到 textFiledReturnEditing 方法,不过此时的事件应当是 Did End On Exit ,具体操做是:基础
打开 Assistant Editor ,左边打开 ViewController.xib ,右边打开 ViewController.h ,在 Xcode 最右边打开 Connector Inspector ,而后在 View 中选择第一个文本框,在 Connector Inspector 中找到 Did End On Exit ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 textFiledReturnEditing 方法,以下图:程序
给其余两个文本框进行一样的操做。如今,已经实现了轻触 Return 键关闭键盘。
二、下面介绍更人性化的方法,轻触背景关闭键盘。
跟上面的步骤差很少,首先定义一个方法,而后实现这个方法,接下来将指定的控件映射到这个方法,并选择好所触发的事件。不一样的是,此次咱们要选择的控件不是上边的文本框,而是视图 View 自己。
(1)在 ViewController.h 文件中添加方法声明代码:
- (IBAction)backgroundTap:(id)sender;
(2)在ViewController.m中实现这个方法:
- (IBAction)backgroundTap:(id)sender { [firstField resignFirstResponder]; [secondField resignFirstResponder]; [thirdField resignFirstResponder]; }
须要说明的是,[firstField resignFirstResponder];表示,若是firstField有FirstResponder的话就放弃它,咱们不用先判断firstField是否有,这条语句彻底正确。
(3)让 View 映射到这个方法,不过事先,咱们先要改变 View 的类型。
打开xib,选中 View ,打开 Identity Inspector ,在 class 中选择 UIControl :
(4)打开Assistant Editor ,左边打开 ViewController.xib ,右边打开 ViewController.h ,在Xcode最右边打开 Connector Inspector ,在 ViewController.xib 中选择 Control ,在 Connector Inspector 中找到 Touch Down ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 backgroundTap 方法,以下图:
好了,能够运行下看看效果了:
打开键盘以后,在背景区域点击一下,键盘就会向下收起来。