64

以下のコードは iOS6 (およびそれ以前) で動作しますが、UITextField は iOS7 では表示されません... iOS7 の UIAlterView に UITextField を表示する方法についてのアイデアはありますか?

UIAlertView* dialog = [[UIAlertView alloc] init];
[dialog setDelegate:self];
[dialog setTitle:@"Enter ESC Score"];
[dialog setMessage:@" "];
[dialog addButtonWithTitle:@"Cancel"];
[dialog addButtonWithTitle:@"OK"];
dialog.tag = 5;

nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[nameField setKeyboardType:UIKeyboardTypeNumberPad];
[nameField becomeFirstResponder];
[nameField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:nameField];
CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0, 0.0);
[dialog setTransform: moveUp];
[dialog show];
[dialog release];

[nameField release];

iOS6 で実行されるコードは次のように表示されます。

ここに画像の説明を入力

iOS7 の同じコードはこれを表示します (UITextField がなく、キーボードがないことに注意してください):

ここに画像の説明を入力

4

7 に答える 7

178

iOS 7 で UIAlertView のビュー階層を簡単に変更することはできません。

あなたの場合の1つの選択肢はalert.alertViewStyle = UIAlertViewStylePlainTextInput; 、テキストフィールドを追加するように設定することです。を使用して、UIAlertView デリゲート コールバックでアクセスできますUITextField *textField = [alertView textFieldAtIndex:0];

于 2013-08-31T15:10:34.947 に答える
6
UIAlertView *alertView = [[UIAlertView alloc]
                                  initWithTitle:@"Credit Card Number"
                                  message:@"Please enter your credit card number:"
                                  delegate:self
                                  cancelButtonTitle:@"Cancel"
                                  otherButtonTitles:@"Ok", nil];
        [alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
        /* Display a numerical keypad for this text field */
        UITextField *textField = [alertView textFieldAtIndex:0];
        textField.keyboardType = UIKeyboardTypeNumberPad;

[alertView show];
于 2014-01-09T12:28:19.917 に答える