2

我创建了一个UIAlertView运行良好的自定义(从头开始,没有以任何方式子类化)类,但是当警报具有文本字段时我遇到了问题。在这种特殊情况下,当我点击电子邮件地址字段时,键盘会出现在我的弹出警报下方。调用此弹出窗口的视图也有一个UITextField(注释框)。我注意到我只有在点击主视图文本字段(评论框)之后点击弹出文本字段(电子邮件地址)时才会遇到这个问题。文本字段未使用相同的委托。

在此处输入图像描述

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

更新:将文本字段添加到弹出窗口的代码(这是我的警报类中的一个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 回答