【问题标题】:textFieldShouldEndEditing not called when user taps Done Button in UIKeyboard用户点击 UIKeyboard 中的完成按钮时未调用 textFieldShouldEndEditing
【发布时间】:2012-04-16 07:21:32
【问题描述】:

我在 textfieldShouldEndEditing 委托方法中对 UITextField 进行验证,因此每次我更改正在编辑的 UITextfield 时都会调用该方法并执行验证。

键盘的返回按钮配置为完成按钮。当按下它时,我会处理输入,但上次编辑的 UItextField 的 textfieldShouldEndEditing 之前从未被调用过,因此它未被验证。

这对我来说似乎很奇怪,因为正常行为是用户在输入字段中的最后一个字符后点击完成按钮,但这不会触发textFieldShouldEndEditing方法。

为此,我必须在 textfieldShouldReturn 方法中再次强制验证。

也许我错过了一些观点,因为我找不到其中的逻辑。

【问题讨论】:

    标签: cocoa-touch uitextfield uikeyboard uitextfielddelegate


    【解决方案1】:

    我找到了问题。

    我必须在textfieldShouldReturn中辞职FirstResponder,然后textfieldShouldEndEditing被调用。

    这是我的方法。我有两个 UITextFields。 self.username是其中一个的 IBOutlet,返回按钮配置为 NEXT。 self.password是其他 IBOutlet 指向带有完成返回按钮的 UITextField。

    -(BOOL)textFieldShouldEndEditing:(UITextField *)textField
    {
        if (textField == self.userName) {
            return [self validateUserName:textField.text];
    
        }
    
    
    
        if (textField == self.password) {
            return [self validatePassword:textField.text];
    
        }
    
        //No hay errores de validación
        return YES;    
    }
    
    
    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        //In userName return is Next
        //In password return is Done
    
        if (textField == self.userName) {
            [self.password becomeFirstResponder];
        } 
        [textField resignFirstResponder];
        return YES;    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多