получать строки из нескольких текстовых полей, используя только клавиатуру

Я хочу создать систему входа с двумя текстовыми полями. Я хочу, чтобы пользователь отредактировал первое текстовое поле и, нажав кнопку «Далее» на клавиатуре, перешел к следующему текстовому полю, и после редактирования он должен был нажать кнопку «Перейти», и система должна это сделать. Итак, что я действительно хочу, так это иметь возможность переходить от одного текстового поля к другому, и наиболее важная часть получает вводимый текст из обоих полей, когда пользователь нажимает кнопку перехода (ведьма находится на клавиатуре второго поля). оба моих текстовых поля помечены как IB. Если это не очень понятно, я хочу реализовать что-то очень похожее на вход в приложение Podio. Это то, что у меня есть до сих пор. Любая помощь очень ценится:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    AppSettings *settings = [AppSettings sharedSettings];
    NSString *password;
    NSString *name;

    if(textField == nameTextField)
    {
        name = textField.text;
        NSLog(@"Name text field: %@",name);
    }
    if(textField == passwordTextField)
    {
        password = textField.text;
        NSLog(@"Password text field: %@",password);        
    }

    //this is where I send a call to the server
    [[SessionInfo sharedInfo] loginWithEmail:settings.userEmailFromLogin 
                                     AndName:name AndPasswordRequest:password];

    [textField resignFirstResponder];
    return YES;
}

person alex    schedule 17.04.2012    source источник


Ответы (2)


@yibuyiqu Это не совсем сработало для меня. Но я решил свою проблему, как получить данные из нескольких текстовых полей. Просто нужно сохранить строки из ввода в некоторый объект словаря, например:

- (void)textFieldDidEndEditing:(UITextField *)textField 
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    AppSettings *settings = [AppSettings sharedSettings];
    NSString *password;
    NSString *name;

    if ([textField.text isEqualToString:@""])
        return;

    switch (textField.tag) {
        case NameFieldTag:
            name = textField.text;
            [userDefaults setObject:name forKey:kloginName];
            settings.userNameFromLogin = [userDefaults objectForKey:kloginName];
            break;

        case PasswordFieldTag:
            password = textField.text;
            [userDefaults setObject:password forKey:klogginPassword];
            settings.userPasswordFromLogin = [userDefaults objectForKey:klogginPassword];
            break;
        default:
            break;
    }
}

После этого я использовал решение, опубликованное кем-то здесь, чтобы просмотреть текстовые поля с клавиатуры https://stackoverflow.com/a/1351090/1339876

person alex    schedule 19.04.2012

person    schedule
comment
пароль - это строка. он не может стать первым респондентом. Вы можете быть более конкретным? Благодарность - person alex; 18.04.2012
comment
Извините, это должно быть passwordTextField. Я отредактировал свой ответ. - person yibuyiqu; 19.04.2012