0

当点击某个 CA 层时,我动态创建了两个 UITextField。我已将第一个文本字段设为第一响应者,我想要的是,当我在第一个文本字段中输入文本并按完成时,我希望第二个文本字段成为第一响应者。这就是我在 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;
}

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

4

2 回答 2

2

我不确定您为什么要比较returnKeyType文本字段的属性。您应该比较文本字段是否相等,如果在第一个文本字段上按下返回键,则将第二个文本字段设置为新的响应者。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == titleField) {
        [dateField becomeFirstResponder];
    }
    else if (textField == dateField) {
        // Return button pressed on 2nd field. Do something
    }
    return YES;
}
于 2012-11-12T07:58:27.993 回答
0

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

您不需要在第一个文本字段上 resignFirstResponder。

于 2012-11-12T07:54:46.047 回答