如何关闭iOS键盘?

Tyl*_*ter 74 keyboard ios

我有一个UITextfield,我想解雇键盘.无论我使用什么代码,我似乎无法使键盘消失.

ben*_*ado 191

如果您有多个文本字段并且不知道哪个是第一响应者(或者您只是无法从编写此代码的任何位置访问文本字段),则可以调用endEditing:包含文本字段的父视图.

在视图控制器的方法中,它看起来像这样:

[self.view endEditing:YES];
Run Code Online (Sandbox Code Playgroud)

该参数强制文本字段重新签署第一响应者状态.如果您使用委托来执行验证并希望在文本字段的内容有效之前停止所有内容,您也可以像这样编写代码:

BOOL didEndEditing = [self.view endEditing:NO];
if (didEndEditing) {
    // on to the next thing...
} else {
    // text field must have said to first responder status: "never wanna give you up, never wanna let you down"
}
Run Code Online (Sandbox Code Playgroud)

endEditing:方法比告诉单个文本字段要好得多resignFirstResponder,但出于某种原因,我直到最近才发现它.

  • 该死的!我简直不敢相信我只是在代码注释中被碾压了. (71认同)

Eva*_*ski 64

[myTextField resignFirstResponder]
Run Code Online (Sandbox Code Playgroud)

这里,显示和隐藏键盘部分的第二段.


小智 8

在某些情况下,没有文本字段是第一响应者,但键盘在屏幕上.在这些情况下,上述方法无法解除键盘.

如何到达那里的一个例子:

  1. 以编程方式在屏幕上推送ABPersonViewController; 打开任何联系;
  2. 触摸"注释"字段(成为第一响应者并启动键盘);
  3. 向左滑动任何其他字段以显示"删除"按钮;
  4. 到目前为止,你在文本字段中没有第一个响应者(只是以编程方式检查),但键盘仍在那里.调用[view endEditing:YES]不执行任何操作.

在这种情况下,您还需要让视图控制器退出编辑模式:

[viewController setEditing:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)


ibj*_*azz 6

我建议你在头文件上添加和操作:

-(IBAction)removeKeyboard;
Run Code Online (Sandbox Code Playgroud)

在实现中,写下这样的东西:

-(IBAction)removeKeyboard
{
[self.textfield resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

在NIB文件中,在选项DidEndOnExit上从UITextFiled连接到File的所有者.这样,当您按回车键时,键盘将消失.

希望能帮助到你!


Tho*_*enz 6

在视图控制器YourViewController.h文件中,确保实现UITextFieldDelegate协议:

@interface YourViewController : <UITextFieldDelegate>

@end
Run Code Online (Sandbox Code Playgroud)

然后,在YourViewController.m文件中,实现以下实例方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.yourTextField1 resignFirstResponder];
    [self.yourTextField2 resignFirstResponder];
    ...
    [self.yourTextFieldn resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)


And*_*lla 6

我发现这里的情况endEditingresignFirstResponder失败.在这些情况下,这对我有用.

ObjC

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];    
[self setEditing:NO];
Run Code Online (Sandbox Code Playgroud)

迅速

UIApplication.shared.sendAction(#selector(resignFirstResponder), to: nil, from: nil, for: nil)
Run Code Online (Sandbox Code Playgroud)