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,但出于某种原因,我直到最近才发现它.
Eva*_*ski 64
[myTextField resignFirstResponder]
Run Code Online (Sandbox Code Playgroud)
这里,显示和隐藏键盘部分的第二段.
小智 8
在某些情况下,没有文本字段是第一响应者,但键盘在屏幕上.在这些情况下,上述方法无法解除键盘.
如何到达那里的一个例子:
在这种情况下,您还需要让视图控制器退出编辑模式:
[viewController setEditing:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)
我建议你在头文件上添加和操作:
-(IBAction)removeKeyboard;
Run Code Online (Sandbox Code Playgroud)
在实现中,写下这样的东西:
-(IBAction)removeKeyboard
{
[self.textfield resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
在NIB文件中,在选项DidEndOnExit上从UITextFiled连接到File的所有者.这样,当您按回车键时,键盘将消失.
希望能帮助到你!
在视图控制器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)
我发现这里的情况endEditing和resignFirstResponder失败.在这些情况下,这对我有用.
[[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)
| 归档时间: |
|
| 查看次数: |
87268 次 |
| 最近记录: |