1

我正在使用成为文本字段的第一响应者。如果我尝试点击 becomeFirst responder 文本字段。光标移动到该文本字段,但我无法输入该文本字段。此问题仅在 iOS 5 中出现,但在 iOS 4 中可以正常工作。请解释我来解决这个问题。

  if (textField == fnameTxtFld){

        if([fnameTxtFld.text length]>0)
        {
            if ([fnameTxtFld.text length]<= 100) {

                if (![self checkForSpecialChar:fnameTxtFld.text]) {

                    Custom_Alert *alert=[[Custom_Alert alloc]initWithTitle:@"Alert" message:@"Please check the details entered in First Name" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

                    [alert show];
                    [alert release];

                    [fnameTxtFld becomeFirstResponder];

                    return NO;

                }
                else
                {
                    [textField resignFirstResponder];
                    fnameTxtImg.image=[UIImage imageNamed:@"birth_date.png"];
                    //    [lnameTxtFld performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
                    [lnameTxtFld becomeFirstResponder];

                    return YES;
                }
            }        
            else {
                Custom_Alert *alert=[[Custom_Alert alloc]initWithTitle:@"Alert" message:@"Please check the details entered in First Name" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
                [alert show];
                [alert release];

                [fnameTxtFld becomeFirstResponder];

                return NO;

            }

        }
        else {
            [lnameTxtFld becomeFirstResponder];

            return YES;
            // [fnameTxtFld resignFirstResponder];
        }
    }

如果我在 fnameTxtFld 中,并且我尝试点击 lnaneTxtFld 光标从 fnameTxtFld 移动到 lnameTxtFld 但我无法输入该文本字段。文本不会出现在该文本字段中。请帮助我。

4

2 回答 2

1

我认为这个问题出现在 xcode 4.2 中,如果我们在同一个循环中使用resignFirstResponder 和 becomeFirstResponder有时我们会遇到这种问题,要解决这个问题,您可以按照下面的代码进行操作。这可能会帮助你

辞职第一响应者

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

成为第一响应者

[textfield performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
于 2012-08-30T07:39:04.083 回答
0

我认为这只会部分起作用。我通过在应该开始编辑中设置布尔变量解决了这个问题。我将在 didend 编辑中访问这个变量。当 didendEditing 被调用时,应该开始不应该被调用。谢谢你的回复。。

于 2012-08-30T09:07:24.000 回答