显示在不同视图上的键盘会导致UIKeyboardLayoutAlignmentView约束错误

时间:2015-07-08 19:42:53

标签: ios objective-c cocoa-touch

我有一份崩溃报告,这是一个真正的边缘案例。我从applicationWillEnterForeground启动了一个引脚安全视图(该功能是可选的)。但是,我有一些表格,我在我的应用程序的某些情况下使用。

因此,引脚视图在窗口中添加为子视图,并显示键盘。

当显示表单时,它显示在引脚视图的顶部(这是错误的),并且当显示另一个键盘时,表单上的操作会导致崩溃。

所以我相信如果申请辞职/变得活跃,我需要解雇任何表单。

我已经考虑向applicationWillEnterForeground中的表单发送通知,但是我必须首先确定表单是否可见,然后添加方法以在每个表单中将其关闭。

对于一个边缘案例,这似乎有很多工作,有人可以提出另一种方法吗?

为了完整性,这里出现错误......

  

将-updateConstraints发送到< _UIKeyboardLayoutAlignmentView:0x14e59b790后,布局约束仍然需要更新; frame =(0 0; 0 0); userInteractionEnabled = NO; layer =>。 _UIKeyboardLayoutAlignmentView或其中一个超类可能已经重写-updateConstraints而不调用super。或者,在更新它们的过程中,某些东西可能会出现布局限制。两者都是编程错误。

我看过这个...... NSInteralInconsistencyException - UIKeyboardLayoutAlignmentView

但是,我仍然需要在各种表单中结束编辑,我无法从applicationWillEnterForeground访问。

1 个答案:

答案 0 :(得分:0)

好的,在研究了这个问题后,我发现我需要观察应用程序状态。在通知然后检查是否加载了各种对象,如果是,则在显示键盘时显示resignFirstResponder(也就是编辑)(我在UIAlertView中有一个文本字段),关闭UIAlertView然后在对话框中使用的视图控制器中关闭。 / p> 嘘......所以不像我希望的那么简单。 虽然这对我来说是一个优势,但我想我应该解决它。

我还发现了这会解除警报视图https://github.com/sdarlington/WSLViewAutoDismiss

在简单的场景中,这将为我省去很多麻烦。

显然,自iOS4起,Apple建议在应用程序激活时取消UIAlertViews和UIActionSheets。