UITextField 键盘没有消失
Posted
技术标签:
【中文标题】UITextField 键盘没有消失【英文标题】:UITextField Keyboard not disappearing 【发布时间】:2014-02-19 00:07:51 【问题描述】:我目前正在为 ios 7 编写应用程序,但最近遇到了一个有趣的错误。在我的一个 UIViews 中,我有 3 个普通的 UITextFields 和另外两个在编辑开始时 resignFirstResponder 的 UITextFields。它们显示了一个 UIDatePicker 和 UIPickerView 以及一个 UIToolbar。我遇到的错误是,当我在前 3 个文本字段之一中键入内容时,继续单击结束编辑的文本字段而不单击 UIControl(称为 backgroundTapped :),键盘不会消失。我添加了一个日志以查看文本字段是否正在使用“canResignFirstResponder”退出 firstResponder 状态,并且它返回“1”,但即使在更改视图时键盘也不会消失,直到我单击前 3 个文本之一字段并单击背景。
这是我的 textFieldDidBeginEditing: 和我的 showRunTypePicker: 方法的开始:
textFieldDidBeginEditing:
- (void)textFieldDidBeginEditing:(UITextField *)textField
[textField becomeFirstResponder];
if (textField.tag == 3005)
//[textField resignFirstResponder];
//[self.view endEditing:YES];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.25];
[self showRunTypePicker:self];
[UIView commitAnimations];
showRunTypePicker:
- (IBAction)showRunTypePicker:(id)sender
BOOL canResign = [runTypeField canResignFirstResponder];
NSLog(@"canResign: %hhd", canResign);
[runTypeField endEditing:YES];
[runTypeField resignFirstResponder];
[[self view] endEditing:YES];
[pickerView endEditing:YES];
[pickerView setHidden:YES];
[toolbar setHidden:YES];
[distanceField endEditing:YES];
...
我似乎无法弄清楚问题所在。谁能帮我解决这个问题?
编辑:它现在正在工作。我将 [self showRunTypePicker:self] 设置为 [self showRunTypePicker:textField] 并将其移至 textFieldShouldBeginEditing。现在键盘正确地消失了。
【问题讨论】:
你有。代码中的错误。 【参考方案1】:您的代码中有错误。
阅读这一行
[self showRunTypePicker:self];
你不认为它实际上应该是:
[self showRunTypePicker:textField];
您的意图是在您选择特定文本字段时退出键盘。 所以你实际上应该通过
textField
标签为3005的实例。
尝试将 sender 用作 UITextField 并执行布尔检查。
希望对您有所帮助。
【讨论】:
以上是关于UITextField 键盘没有消失的主要内容,如果未能解决你的问题,请参考以下文章