検証の形式として、「OK」ボタンを押したときに警告ビューが閉じないようにする方法はありますか?
シナリオ: アラートビューにユーザー名/パスワード用の 2 つのテキスト フィールドがあります。両方が空で、ユーザーが「OK」を押した場合、アラートが消えないようにします。
検証の形式として、「OK」ボタンを押したときに警告ビューが閉じないようにする方法はありますか?
シナリオ: アラートビューにユーザー名/パスワード用の 2 つのテキスト フィールドがあります。両方が空で、ユーザーが「OK」を押した場合、アラートが消えないようにします。
UIAlertView
iOS 5では、この問題を正確に処理するための新しいプロパティが導入されています。
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
UIAlertViewDelegate
ボタンの有効化/無効化を処理する新しいメソッドを追加します。
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
入力に従って送信ボタンを有効または無効にする必要があります。まず、ボタンにアクセスする必要があります。これは簡単です。ボタンなしでアラートを作成し、スタンドアロン ボタンを作成してダイアログに追加するだけです。
[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;
}
もちろん、呼び出しコードを台無しにしないように、これらすべてを別のクラスにラップする必要があります。