UITextfield стал первым респондентом не работает - PullRequest
1 голос
/ 08 мая 2011

У меня есть панель инструментов в верхней части клавиатуры с кнопками prev и next.Когда я нажимаю следующую кнопку, следующее текстовое поле должно стать первым респондентом, но этого не происходит.Вот мой код.

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

Я вхожу в журнал "фамилия", но курсор не появляется, и если я что-то набираю, он нигде не появляется.

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

Таким образом, вы проверяете, является ли имя первым респондентом, и если это так, тогда фамилия становится первым респондентом.

Затем вы проверяете, является ли фамилия первым респондентом, и если это так, вы отправляете электронное письмо первым респондентом.

Затем вы проверяете, является ли электронная почта первым респондентом, и если это так ....

Ваша проблема в том, что каждое из этих утверждений if верно, потому что стать первым респондентомнемедленная вещь.

Другими словами, вы должны использовать операторы else if (...) вместо дискретных операторов if.

0 голосов
/ 12 декабря 2013

создать массив объектов текстового поля, скажем, textFieldArray. затем на предыдущей и следующей вкладке кнопки вызовите следующую функцию

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