2014-01-14 46 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)

相关问题