将UITextField键盘置于前面

时间:2013-10-24 22:49:11

标签: ios iphone uitextfield

我创建了一个自定义UIAlertView(从头开始,没有以任何方式进行子类化)类,它运行得非常好,但是当警报有文本字段时我遇到了问题。在此特定实例中,当我点击电子邮件地址字段时,键盘将显示在我的弹出警报下。调用此弹出窗口的视图也有UITextField(注释框)。我注意到,如果在点击主视图文本字段(注释框)后点击弹出文本字段(电子邮件地址),我只会遇到此问题。文本字段不使用相同的委托。

enter image description here

有没有办法强制键盘到视图层次结构的前面?

更新: 用于向弹出窗口添加文本字段的代码(这是我的警报类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];

1 个答案:

答案 0 :(得分: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处的视图是键盘视图。