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

时间:2012-11-12 07:40:10

标签: iphone objective-c ios uitextfield xcode4.5

我在某个CA层上轻触时动态创建了两个UITextField。我把第一个文本字段作为第一个响应者,我想要的是,当我在第一个Textfield中输入文本并按完成时,我希望第二个文本字段成为第一个响应者。 这就是我在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显示键盘。 那么,我错过了什么或做错了什么,或者我必须把它放在其他地方。请帮帮我。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

您不需要在第一个文本字段中使用resignFirstResponder。