2

UIAlertView非常にうまく機能するカスタム (ゼロから、サブクラス化されていない) クラスを作成しましたが、アラートにテキスト フィールドがあると問題が発生します。この特定の例では、電子メール アドレス フィールドをタップすると、ポップアップ アラートの下にキーボードが表示されます。このポップアップが呼び出されるビューにもUITextField(コメント ボックス) があります。メイン ビューのテキスト フィールド (コメント ボックス) をテーピングした後、ポップアップ テキスト フィールド (電子メール アドレス) をタップした場合にのみ、この問題が発生することに気付きました。テキスト フィールドは同じデリゲートを使用していません。

ここに画像の説明を入力

キーボードをビュー階層の前面に強制する方法はありますか?

更新: ポップアップにテキスト フィールドを追加するコード (これは私のアラート クラスの 1 つですPopupDialog.m)

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 34)];
_textField.font = [UIFont fontWithName:@"GillSans" size:18];
_textField.borderStyle = UITextBorderStyleRoundedRect;
_textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
_textField.backgroundColor = [UIColor white];
_textField.delegate = self;
_textField.placeholder = @"email@domain.com";

後でボタンの上のポップアップ ビューに追加されます。半透明の黒い背景とポップアップ ビューは、最終的に次の方法でビュー階層に追加されます。

[[[[UIApplication sharedApplication] windows] lastObject] addSubview:background];
[[[[UIApplication sharedApplication] windows] lastObject] addSubview:self];
4

1 に答える 1

1

したがって、「コメント」UITextField(ポップアップの下) に表示されたのと同じキーボードが、ポップアップの「電子メール」に使用されていたことUITextFieldがわかります。ポップアップと半透明の黒い背景をこのキーボード ビューの背後に移動する必要がありました。

int count = [[[UIApplication sharedApplication] windows] count];
[[[[UIApplication sharedApplication] windows] objectAtIndex:count - 2] addSubview:background];
[[[[UIApplication sharedApplication] windows] objectAtIndex:count - 2] addSubview:self];

ここでのビューcount - 1はキーボード ビューです。

于 2013-10-25T02:43:13.300 に答える