2014-02-19 124 views
0

我目前正在为iOS 7编程一个应用程序,但我最近遇到了一个有趣的错误。在我的一个UIViews中,我有3个普通的UITextFields和两个其他的UITextFields,当编辑开始时resignFirstResponder。他们展示了一个UIDatePicker和UIPickerView以及一个UIToolbar。我遇到的错误是当我输入前3个文本字段之一,然后继续单击无需单击UIControl(称为backgroundTapped :)即可结束编辑的文本字段,键盘不会消失。我添加了一个日志来查看文本字段是否使用“canResignFirstResponder”退出firstResponder状态,并且它返回“1”,但即使在更改视图之前键盘仍然不会消失,直到单击前3个文本中的一个字段并单击背景。UITextField键盘不会消失

这是我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。现在键盘正常消失。

+0

你有。您的代码中存在错误。 –

回答

0

您有代码错误。

阅读本线

[self showRunTypePicker:self]; 

难道你不认为它实际上应该是:

[self showRunTypePicker:textField]; 

这里你有意辞职的键盘时,您标签的具体文本字段。 所以,你应该是实际传递

textField 

实例,它的标签是3005

尝试使用发件人作为一个的UITextField,并执行布尔检查。

希望有所帮助。