UITextfield成为第一响应者无法工作

时间:2011-05-08 13:30:58

标签: ios uitextfield becomefirstresponder

键盘顶部有一个工具栏,上面有一个上一个和下一个按钮。当我按下一个按钮时,下一个文本字段应该成为第一响应者,但这不会发生。这是我的代码。

-(IBAction) nextfield {
    if([name isFirstResponder] == TRUE) {
        [name resignFirstResponder];
        [surname becomeFirstResponder];
        if(surname.editing == TRUE)
            NSLog(@"surname");
    }
    if([surname isFirstResponder] == TRUE) {
        [email becomeFirstResponder];
    }
    if([email isFirstResponder] == TRUE) {
        [password becomeFirstResponder];
    }
    if([password isFirstResponder] == TRUE) {
        [confirm becomeFirstResponder];
    }
    if([confirm isFirstResponder] == TRUE) {
        [country becomeFirstResponder];
    }
    if([country isFirstResponder] == TRUE) {
        if(country.text == @"United States") {
            [state setEnabled:TRUE];
            [state becomeFirstResponder];
        }
        else {
            [type becomeFirstResponder];
        }
    }
    if([state isFirstResponder] == TRUE) {
        [type becomeFirstResponder];
    }
    if ([type isFirstResponder] == TRUE) {
        [name becomeFirstResponder];
    }
}

我进入Log“surname”但是光标没有出现,如果我输入了什么,它就不会出现在任何地方。

2 个答案:

答案 0 :(得分:3)

所以你要检查名字是否是第一个响应者,如果是,那么将姓氏作为第一个响应者。

然后你检查并查看姓氏是否是第一个响应者,如果是,则将电子邮件作为第一个响应者。

然后你检查并查看电子邮件是否是第一个响应者,如果是......

你的问题是每个if语句都是正确的,因为成为第一响应者是一个直接的事情。

换句话说,您应该使用else if (...)语句而不是离散的if语句。

答案 1 :(得分:0)

创建一个textfield对象数组,让我们说textFieldArray。然后在func

之后的prev和next按钮选项卡上调用
 -(void)gotoPrevTextfield

{
  for(int i=1 ;i<[textFieldArray count];i++)
{
    if([textFieldsArray [i] isFirstResponder])
    {
        [textFieldsArray[i-1] becomeFirstResponder];
        [textFieldsArray [i] resignFirstResponder];

         break;
    }
}}

    -(void)gotoNextTextfield
   {
for( int i=0 ;i<[textFieldArray count];i++)
{
    if([textFieldsArray [i] isFirstResponder])
    {
        [textFieldsArray [i+1] becomeFirstResponder];
        [textFieldsArray [i] resignFirstResponder];

        break;
    }
}}