10

検証の形式として、「OK」ボタンを押したときに警告ビューが閉じないようにする方法はありますか?

シナリオ: アラートビューにユーザー名/パスワード用の 2 つのテキスト フィールドがあります。両方が空で、ユーザーが「OK」を押した場合、アラートが消えないようにします。

4

3 に答える 3

12

UIAlertViewiOS 5では、この問題を正確に処理するための新しいプロパティが導入されています。

alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;

UIAlertViewに関するAppleのドキュメント。

UIAlertViewDelegateボタンの有効化/無効化を処理する新しいメソッドを追加します。

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView

UIAlertViewDelegateに関するAppleのドキュメント。

于 2012-03-26T15:33:40.580 に答える
9

入力に従って送信ボタンを有効または無効にする必要があります。まず、ボタンにアクセスする必要があります。これは簡単です。ボタンなしでアラートを作成し、スタンドアロン ボタンを作成してダイアログに追加するだけです。

[alert addButtonWithTitle:@"OK"];
UIButton *submitButton = [[alert subviews] lastObject];
[submitButton setEnabled:…];

次に、これらのテキストフィールドにデリゲートを設定し、フィールドが変更されたときにボタンを有効または無効にする必要があります。

- (BOOL) textField: (UITextField*) textField
    shouldChangeCharactersInRange: (NSRange) range
    replacementString: (NSString*) string
{
    int textLength = [textField.text length];
    int replacementLength = [string length];
    BOOL hasCharacters = (replacementLength > 0) || (textLength > 1);
    [self setButtonsAreEnabled:hasCharacters];
}

// Disable the ‘Return’ key on keyboard.
- (BOOL) textFieldShouldReturn: (UITextField*) textField
{
    return NO;
}

もちろん、呼び出しコードを台無しにしないように、これらすべてを別のクラスにラップする必要があります。

于 2009-12-23T06:14:37.363 に答える