随着最新的iOS 8.3发布,我们的应用程序开始出现奇怪的行为。
在完成文本字段编辑后,用户可以点击关闭按钮,这将弹出一个 UIAlertView
。当用户在警报视图中点击放弃时,警报视图和当前视图都会被解除。但是,在视图消失后键盘会弹出来,这对用户来说非常烦人。
经过一些调试,似乎键盘是显示在用户关闭视图之前访问的最后一个文本字段上。我尝试了各种方法,在许多地方(在显示UIAlertView
之前,在UIAlertView
中单击按钮后;我甚至将焦点设置为视图的另一个UI元素)中结束当前视图的endEditing
。这并没有解决问题。
但是对于这个特定问题,我不确定它是否是一个普遍的问题,还是我们需要修复它。在iOS 8.3之前,一切都运作得非常完美。
我们知道UIAlertView
已经在iOS 8中被弃用。我们正在开始迁移到UIAlertController
。但是,如果有任何变通方法,我们很乐意听取建议。
这里是一些代码片段。
- (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];
}