在第一个 UITextField 完成编辑并按完成后,使第二个 UITextField 成为第一响应者



我在某个CA层上点击时动态创建了两个UITextFields。我已将第一个文本字段设置为第一个响应者,我想要的是,当我在第一个文本字段中输入文本并按完成时,我希望第二个文本字段成为第一个响应者。这就是我在textFieldShouldReturn中为此所做的。

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (titleField.returnKeyType== UIReturnKeyDone) {
        NSString *title = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if (title.length>0 )
        {
            [self changeLayersTitle:title];
        }
        [dateField becomeFirstResponder];
    if (dateField.returnKeyType==UIReturnKeyDone)
    {
        NSString *date = [dateField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        if (date.length>0)
        {
            [self changeLayersDate:date];
        }
    }
        [dateField resignFirstResponder];
        [bgLayer removeFromSuperlayer];
        [titleField removeFromSuperview];
        [dateField removeFromSuperview];

    }
    return NO;
}

现在,当我在第一个文本中输入文本后按完成时,它关闭了两个文本字段,bt 向我显示了键盘。那么,我错过了什么或做错了什么,还是我必须把它放在别的地方。请帮帮我。

我不确定您为什么要比较文本字段的 returnKeyType 属性。您应该比较文本字段的相等性,如果对第一个文本字段按下了回车键,则使第二个文本字段成为新的响应者。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == titleField) {
        [dateField becomeFirstResponder];
    }
    else if (textField == dateField) {
        // Return button pressed on 2nd field. Do something
    }
    return YES;
}

在您的完成按钮回调方法中,您不能将第二个文本字段设置为第一个响应者吗?

您无需在第一个文本字段中辞职第一响应者。

相关内容

最新更新