2012-09-14 94 views
5

我有一個UIVIew,它是一個子視圖,它包含幾個UITextFields。其中一個文本框(用於DATE)不應該使用鍵盤進行編輯,而不是使用帶有DatePicker的PopOver。UIVIew endEditing:YES does not hide the keyboard

我在達到UIControlEventEditingDidBegin時運行一個方法。此方法調用DateTextField上的resignFirstResponder

如果DateTextField是編輯的第一個字段,但是當編輯另一個textField並顯示鍵盤然後嘗試編輯DateField時,一切正常,鍵盤不會隱藏並且一切正常,但使用鍵盤做任何事情。

我試圖在resignFirstResponder之前調用方法endEditing:YES,但它不起作用。我試圖在didEndEditing文本字段方法上運行endEditing:YESresignFirstResponder,但無法將該鍵盤取出。

這裏是我的方法:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES]; 

    UITextField *textField = (UITextField *)sender; 
    [sender resignFirstResponder]; // hide keyboard 

    /** POP OVER LINES**/ 
} 

回答

2

您應該使用的,而不是辭職第一響應者在didBeginEditingtextFieldShouldBeginEditing:委託方法:

這將允許所有的編輯,但dateTextField文本字段:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    return (![textField isEqual:dateTextField]); 
} 

你應該指定你的視圖控制器是一個文本視圖委託以及像這樣(在我接口聲明[.h文件]):

@interface MyViewController : UIViewController <UITextFieldDelegate> 
+0

非常感謝,它現在可以工作。我還必須將事件UIControlEventEditingDidBegin更改爲UIControlEventTouchDown – chost

+0

很酷,很高興你將它解決了!快樂的編碼。 – chown