0

私のアプリには登録ビューがpassword textfieldあり、 と の文字列を比較しconfirm password textfield、一致しない場合はユーザーに戻ってもらいたいpassword textfield

この質問は、タグ UITextField jump to previousを使用してそれを行いました

タグを使わずにこれを達成する方法はありますか?

//call next textfield on each next button
- (BOOL) textFieldShouldReturn:(UITextField *) textField {

    BOOL didResign = [textField resignFirstResponder];
    if (!didResign) return NO;

    if ([textField isKindOfClass:[SOTextField class]])
        dispatch_async(dispatch_get_current_queue(),
                       ^ { [[(SOTextField *)textField nextField] becomeFirstResponder]; });

    return YES;

}

-(void)textFieldDidEndEditing:(UITextField *)textField{

    if (textField==self.confirmPassword) {

        if ([self.password.text isEqualToString:self.confirmPassword.text]) {
            NSLog(@"password fields are equal");

        }
        else{
            NSLog(@"password fields are not equal prompt user to enter correct values");
            //[self.password becomeFirstResponder]; doesnt work 
        }

    }
}
4

1 に答える 1

0

タグを使用せずに、目的の順序を記述するテキストフィールド アウトレットの NSArray を作成できます。

このように宣言して初期化します...

@property(nonatomic,strong) NSArray *textFields;

- (NSArray *)textFields {
    if (!_textFields) {
        // just made these outlets up, put your real outlets in here...
        _textFields = [NSArray arrayWithObjects:self.username, self.password, nil];
    }
    return _textFields;
}

現在フォーカスがあるテキスト フィールドがある場合は、それを取得する必要があります...

- (UITextField *)firstResponderTextField {

    for (UITextField *textField in self.textFields) {
        if ([textField isFirstResponder]) return textField;
    }
    return nil;
}

次に、このようにフォーカスを進めます...

- (void)nextFocus {

    UITextField *focusField = [self firstResponderTextField];

    // what should we do if none of the fields have focus?  nothing
    if (!focusField) return;
    NSInteger index = [self.textFields indexOfObject:textField];

    // advance the index in a ring
    index = (index == self.textFields.count-1)? 0 : index+1;
    UITextField *newFocusField = [self.textFields objectAtIndex:index];
    [newFocusField becomeFirstResponder];
}

そして、このようにフォーカスを後方に移動します...

- (void)previousFocus {

    UITextField *focusField = [self firstResponderTextField];

    // what should we do if none of the fields have focus?  nothing
    if (!focusField) return;
    NSInteger index = [self.textFields indexOfObject:textField];

    // backup the index in a ring
    index = (index == 0)? self.textFields.count-1 : index-1;
    UITextField *newFocusField = [self.textFields objectAtIndex:index];
    [newFocusField becomeFirstResponder];
}
于 2013-02-26T21:22:48.950 に答える