2014-02-19 168 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,並執行布爾檢查。

希望有所幫助。