2014-01-14 56 views
4

我在ViewController中有2個UITextField。一個帶來了一個UIDatePicker另一個帶來了一個KeyBoard(數字鍵盤)。然後,我通過以下方法將用戶輸入分配給兩個類變量,一個NSDate變量和一個NSNumber變量。什麼時候會調用textFieldDidEndEditing:textField?

-(void)textFieldDidEndEditing:(UITextField *)textField{ 
    if (textField == self.datePickerTextField){ 
     //update xxtime 
     self.xxTime = self.datePicker.date; 
     NSLog(@"...%@",self.xxTime); 
    } 
    if (textField == self.numberTextField) { 
     int val = [textField.text intValue]; 
     self.xxNumber = [NSNumber numberWithInt:val]; 
     NSLog(@"...%@",self.xxNumber); 
    } 

} 

如果我先點擊datePickerTextField那麼numberTextField,這種方法不會被調用後,我結束在numberTextField打字。

所以我的問題是如何讓這個方法被調用?我應該在什麼地方指定「resignFirstResponder」?

TIA

回答

7

它會調用didEndEditing一旦另一個控件獲得焦點

按照API,之後文本字段辭職第一響應者的 狀態

該方法被調用。

所以,如果你想調用didEndEditing,你需要調用

[textField resignFirstResponder]; 
+0

謝謝你的方法!什麼將是一個很好的地方來呼籲resignFirstResponder。現在我正在按「保存」按鈕時調用它。但我想知道這是否是最好的時間/地點來稱呼它。 – AlexaH

+0

是的,聽起來不錯! – Shai

2

呦是正確的,你需要指定resignFirstResponder

- (BOOL)textFieldShouldReturn:(UITextField *)textField {//Text Field Delegate 
    if (textField == textField1) { 
     [textField1 becomeFirstResponder]; 
    }else{ 
     [textField resignFirstResponder]; 
    } 
    return TRUE; } 

這可以用textFieldDidEndEditing

+0

謝謝!我沒有一個返回按鈕所以不能真正使用此。嘗試找到一個稱之爲resignFirstResponder的好地方。 – AlexaH

0
使用

請檢查您使用的是什麼iOS。請記住,如果你正在使用iOS的10,是取代舊的textFieldDidEndEditing叫func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason)

相關問題