【发布时间】:2015-05-08 17:09:33
【问题描述】:
随着最新的 iOS 8.3 版本,我们的应用开始出现奇怪的行为。
完成文本字段编辑后,用户可以单击关闭按钮,该按钮会弹出UIAlertView。当用户在 alertview 中点击 discard 时,alertview 和 current view 将被关闭。但不知何故,在视图消失后键盘会出现,这对用户来说非常烦人。
经过一些调试,似乎在关闭视图之前用户访问的最后一个文本字段显示了键盘。我在很多地方尝试了各种方法来endEditing 用于当前视图(在显示UIAlertView 之前,单击UIAlertView 中的按钮后;我什至将焦点设置到视图的另一个UI 元素)。它没有解决问题。
但对于这个特定问题,我不确定这是一个常见问题还是我们需要解决的问题。在 iOS 8.3 之前一切正常。
我们了解到 UIAlertView 在 iOS 8 中已被弃用。我们开始迁移到 UIAlertController。但如果有任何解决方法,我们很乐意听到。
这里有一些代码 sn-p。
- (IBAction)closeTapped:(UIButton *)sender
{
// try to resign first responder
// [self.tfName resignFirstResponder];
// [self.tfPosition resignFirstResponder];
[self.view endEditing:YES];
if(self.orderDetails.isOpen && self.orderItemChanged)
{
UIAlertView* saveAlert = [[UIAlertView alloc] initWithTitle:@"Unsaved Changes"
message:@"Your changes have not been saved. Discard changes?"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Save", @"Discard", nil];
[saveAlert show];
}
else
{
[self close];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch(buttonIndex)
{
case 1: // Save
{
[self save];
break;
}
case 2: // Discard
{
[self close];
break;
}
}
}
- (void)close
{
[self.delegate dismissEditOrderItemVC];
}
【问题讨论】:
-
在显示警报视图之前,您是否尝试在文本字段上调用 resignFirstResponder?
-
是的,我为所有文本字段做了 resignFirstResponder 并为当前视图做了 endEditing。似乎不起作用:(
-
您可能需要向我们展示代码才能进一步提供帮助。似乎解除警报视图正在触发视图控制器上的一些生命周期调用。
-
我在原始帖子中添加了一个代码 sn-p。谢谢。
标签: ios ipad uialertview ios8.3