简体   繁体   English

什么时候会调用textFieldDidEndEditing:textField?

[英]When Will textFieldDidEndEditing:textField be called?

I have 2 UITextField in a ViewController. 我在ViewController中有2个UITextField。 One brings up a UIDatePicker another brings up a KeyBoard(number pad). 一个调出一个UIDatePicker,另一个调出一个KeyBoard(数字键盘)。 I then assign user inputs to two class variables, a NSDate variable and a NSNumber variable, in the following method. 然后,我在以下方法中将用户输入分配给两个类变量,NSDate变量和NSNumber变量。

-(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);
    }

}

If I tap the datePickerTextField first then the numberTextField, this method won't get called after I finish typing in the numberTextField. 如果我首先点击datePickerTextField然后点击numberTextField,那么在我输入numberTextField后将不会调用此方法。

So my question is how do I make this method to get called? 所以我的问题是如何让这个方法被调用? Should I specify "resignFirstResponder" somewhere? 我应该在某处指定“resignFirstResponder”吗?

TIA TIA

It will invoke didEndEditing once another control gains focus 一旦另一个控件获得焦点,它将调用didEndEditing

According to the API , 根据API

This method is called after the text field resigns its first responder status. 在文本字段重新启动其第一个响应者状态后调用此方法。

So if you want didEndEditing to be invoked, you need to call 因此,如果您想要调用didEndEditing,则需要调用

[textField resignFirstResponder];

Yo are right you need to specify resignFirstResponder 你是对的,你需要指定resignFirstResponder

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

this can used with textFieldDidEndEditing also 这也可以与textFieldDidEndEditing使用

Please check what iOS you are using. 请检查您正在使用的iOS。 Remember that if you are using iOS 10, there is a method that is replacing the old textFieldDidEndEditing called func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) 请记住,如果您使用的是iOS 10,则有一种方法正在替换名为func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason)的旧func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM