1

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

-(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];
    }
}

我进入日志“姓氏”,但光标没有出现,如果我输入一些东西,它不会出现在任何地方。

4

2 回答 2

3

因此,您正在检查 name 是否是第一响应者,如果是,则将 surname 设为第一响应者。

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

然后您检查电子邮件是否是第一响应者,如果是....

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

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

于 2011-05-08T13:37:31.573 回答
0

创建一个文本字段对象数组让我们说 textFieldArray。然后在上一个和下一个按钮选项卡调用下面的 func

 -(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;
    }
}}
于 2013-12-12T11:26:52.130 回答