随着最新的 iOS 8.3 版本,我们的应用程序开始出现奇怪的行为。
完成文本字段编辑后,用户可以单击关闭按钮,该按钮会弹出一个UIAlertView
. 当用户在alertview 中点击discard时,alertview 和当前视图都被关闭。但不知何故,在视图消失后键盘出现了,这对用户来说很烦人。
经过一些调试,似乎在关闭视图之前用户访问的最后一个文本字段显示了键盘。我在许多地方尝试了各种方法来endEditing
获取当前视图(在显示之前UIAlertView
,单击 中的按钮之后UIAlertView
;我什至将焦点设置到视图的另一个 UI 元素)。它没有解决问题。
但是对于这个特定问题,我不确定这是一个常见问题还是我们需要解决的问题。在 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];
}