UITextField键盘不会消失

时间:2014-02-19 00:07:52

标签: ios iphone objective-c keyboard

我目前正在为iOS 7编写应用程序,但最近我遇到了一个有趣的错误。在我的一个UIViews中,我有3个普通的UITextField和另外两个UITextFields,它们在编辑开始时就是resignFirstResponder。它们显示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 个答案:

答案 0 :(得分:0)

您的代码存在错误。

阅读此行

[self showRunTypePicker:self];

你不认为它应该是:

[self showRunTypePicker:textField];

此处您的目的是在选中特定文本字段时重新设置键盘。 所以你应该实际传递

textField

标签为3005的实例。

尝试将发件人用作UITextField并执行bool检查。

希望有所帮助。