随着最新的 iOS 8.3 版本的发布,我们的应用程序开始出现奇怪的行为。
完成文本字段编辑后,用户可以单击关闭按钮,弹出一个UIAlertView
。当用户点击时discard在警报视图中,警报视图和当前视图被忽略。但不知怎的,键盘在视图消失后又出现了,这对用户来说很烦人。
经过一些调试后,似乎在关闭视图之前用户访问的最后一个文本字段显示了键盘。我尝试了各种方法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];
}
如果您的部署目标是 iOS 8+,请尝试UIAlertController
.
这是一个快速修复UIAlertView
:当您的文本字段或文本视图放弃第一响应者时,延迟显示警报视图的调用。
[self performSelector:@selector(showAlertView) withObject:nil afterDelay:0.6];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)