一、点击Return键消失
需要调用Did End On Exit事件。
- (IBAction) doneEditing:(id) sender {
[sender resignFirstResponder];}
当你输入结束后点击Return键,启动Did End On Exit事件。resignFirstResponder会撤消UITextField的第一响应状态。意味着你不再想跟textfield交互,不再需要键盘。
PS:有时你需要视图显示时就出现键盘,从而不需要用户去等待。
- (void)viewDidLoad {
[textField becomeFirstResponder];
[super viewDidLoad];
}
二、点击textField以外的位置,让键盘消失
添加一个UIButton按钮覆盖整个屏幕。点击editor->arrange->send to back将它放在视图底层。bgTouched:方法关联button的TouchUpInside事件
-(IBAction) bgTouched:(id) sender
{
[textField resignFirstResponder];
}
理解响应者链方法:
多数用户输入会产生置于响应者链中的一个事件。响应者链是一组对象链接集,其中大多数是通过视图层次结构向上延伸的。任何输入都是由第一响应者先捕捉到的,该响应者通常是与用户直接交互的对象。如果此对象不能解析输入,那么它会将输入向上发送到其超视图(例如,标签可能会将输入发送到其全屏幕视图),然后再发送到其超视图的超视图,不断连锁向上(例如,向上至视图,然后向上至视图控制器)。如果输入沿着视图层次结构一直向上至窗口对象,那么之后,它会被发送到应用程序本身,并最终传递到应用程序委托。
这些对象中的任何一个都可以选择处理一个事件,这将会停止在响应者链中向上传递。按照标准的MVC模型,你通常要将事件响应构建到UIViewController对象中,此对象在响应者链中相当远。
对于任一种UIControl对象,如按钮、滑块和切换开关,事件通常会转变成动作。事件报告屏幕的触摸,而动作则报告控件的操作,因此也更易读。动作所遵循的响应层次结构略有不同。
转载于:https://blog.51cto.com/sookie/1058687