0

そこで、パスワードを入力するためのアラートビューをユーザーに提示したいと思います。キーボードから何かが入力されていることを確認したいのですが。UIAlertViewDelegateで、テキスト入力を取得できることを知っています。しかし、私がこれまでに持っている唯一の解決策は、

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSLog(@"buttonIndex: %i", buttonIndex);

    if (buttonIndex == 0) {
        UITextField *passwordTextField = [alertView textFieldAtIndex:0];
        if (!passwordTextField.text.length == 0) {
            NSLog(@"password: %@", passwordTextField.text);
            // save the password
        }
        else {
            // Show the alert view again asking for the password
        }

    }

}

何も入力しなかった場合は、[OK]をクリックした直後にもう一度パスワードを要求します。これに対するより良い解決策はありますか?ありがとう!

4

2 に答える 2

0

アラートビューを再度表示します。アラートビューをメソッドに入れて呼び出すことができます。

...

} else {

    [self showPassAlert];

}

また、テキストフィールドが編集されるタイミングを監視し、アラートビューでボタンを有効/無効にすることもできます。テキストフィールドの長さが0の場合は、ボタンを無効にします。テキストフィールドが編集され、その長さが0より大きい場合は、ボタンを有効にします。これは、ビューを閉じて再度開くよりも優雅です。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextFieldTextDidChangeNotification object:textField];

...

-(void)textDidChange {

    for (UIView *view in alertView.subviews) {

        if ([view isKindOfClass:[UIButton class]]) {

            if (textField.text.length == 0) {

                //you may need to look for the button's title to make sure you are not disabling the cancel button

                ((UIButton *) view).enabled = NO;

            } else {

                ((UIButton *) view).enabled = YES;

            }

        }

    }

}
于 2012-08-30T16:36:46.967 に答える
0

UITextFieldsの/referenceを作成してみませんかiboutlet。これは、いつでもその値を取得するのに役立ちます。

于 2013-10-11T05:11:52.317 に答える