UITexfield стал первым респондентом не работает

У меня есть панель инструментов в верхней части клавиатуры с кнопками 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 ответа

Решение

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

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

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

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

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

Создать массив объекта текстового поля, скажем, 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;
    }
}}
Другие вопросы по тегам