iOS关闭键盘的三种方法

在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘。当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了。收回键盘分下面的情况来讨论。

大体来说,收起键盘的方法有:

让TextFiled放弃成为第一响应者(resignFirstResponder)

让View或者子View强制结束编辑状态(endEditing

方法一:输入完以后用户点击return后收起键盘

可以点击return收起键盘并不意味着弹出来的键盘一定都有return这个按键,比如数字键盘类型就没有,UIKeyboardTypeWebSearch类型的键盘return键就变成了Go键,需要注意的是这时候的Go键相当于return键。

要想实现点击return让键盘收起,首先需要设置textField代理,当然还要遵循UITextFieldDelegate协议


_textField.delegate = self;

然后实现协议方法- (BOOL)textFieldShouldReturn:(UITextField *)textField;,当然你也可以在这个方法里 main实现一些需求逻辑,比如判断输入的内容符不符合要求等。


- (BOOL)textFieldShouldReturn:(UITextField *)textField{

return [textField resignFirstResponder];

}

方法二:点击背景后收起键盘

点击背景收起键盘可以实现view的- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event方法,然后执行view的- (BOOL)endEditing:(BOOL)force;方法。


- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{

[self.view endEditing:YES]; //实现该方法是需要注意view需要是继承UIControl而来的

}

还有一些比较笨的方法也可以实现达到点击背景后收起键盘的效果,比如:在背景view上面加手势,添加UIButton或者view,然后在对应的点击事件的监听方法中实现resignFirstResponder或者endEditing


UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];

//设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。

tapGestureRecognizer.cancelsTouchesInView = NO;

//将触摸事件添加到view上view可以换成任意一个控件的

[self.view addGestureRecognizer:tapGestureRecognizer];


-(void)keyboardHide:(UITapGestureRecognizer*)tap{

[textFiled resignFirstResponder];//textFiled是指您声明的UITextFiled控件的

}

方法三:不用view实现endEditing的方法

如果说在比较难获取viewController的view时,可以使用下面的方法


[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

或者


[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

结尾:

掌握了这三种方法,在项目中使用哪种方法都是可以实现的,谢谢您的查看,工作顺利哦

你可能感兴趣的:(iOS关闭键盘的三种方法)