一、点击Return键消失

       需要调用Did End On Exit事件。

104318135.png


  1. - (IBAction) doneEditing:(id) sender {
          [sender resignFirstResponder];

    }        


  2. 当你输入结束后点击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];
}



105309761.png

      理解响应者链方法:

       多数用户输入会产生置于响应者链中的一个事件。响应者链是一组对象链接集,其中大多数是通过视图层次结构向上延伸的。任何输入都是由第一响应者先捕捉到的,该响应者通常是与用户直接交互的对象。如果此对象不能解析输入,那么它会将输入向上发送到其超视图(例如,标签可能会将输入发送到其全屏幕视图),然后再发送到其超视图的超视图,不断连锁向上(例如,向上至视图,然后向上至视图控制器)。如果输入沿着视图层次结构一直向上至窗口对象,那么之后,它会被发送到应用程序本身,并最终传递到应用程序委托。

      这些对象中的任何一个都可以选择处理一个事件,这将会停止在响应者链中向上传递。按照标准的MVC模型,你通常要将事件响应构建到UIViewController对象中,此对象在响应者链中相当远。

       对于任一种UIControl对象,如按钮、滑块和切换开关,事件通常会转变成动作。事件报告屏幕的触摸,而动作则报告控件的操作,因此也更易读。动作所遵循的响应层次结构略有不同。