如何用键盘解决这个奇怪的崩溃

Posted

技术标签:

【中文标题】如何用键盘解决这个奇怪的崩溃【英文标题】:How to fix this strange crash with keyboard 【发布时间】:2017-03-31 19:16:08 【问题描述】:

我看到一些现场用户的键盘出现了一些奇怪的崩溃。 看起来像是 UIWindow 的 KVO 问题。

我们没有为关键路径 windowLevel 添加任何观察者,所以想知道是什么导致了这个崩溃或如何调试它。

UIRemoteKeyboardWindow 类的实例 0x12c653e70 是 在键值观察者仍向其注册时释放。 当前观察信息:NSKeyValueObservationInfo 0x12d3e6100 NSKeyValueObservance 0x1196e01a0:观察者:0x1273223f0,密钥路径: windowLevel,选项:上下文:0x0, 属性:0x12c633980>

而且这次崩溃非常随机,我个人从未遇到过这种情况,而是通过 Crashlytics 得到的。任何帮助,将不胜感激。 有没有其他人遇到过类似的问题。

【问题讨论】:

【参考方案1】:

如果您提供了一些示例代码,那就太好了。但我猜你可能会同时在错误的位置删除 UIViewController 的所有观察者。将移除观察者的代码移到“viewWillDisappear”即可解决。

另一个猜测是当键盘被释放时你正在改变它的属性。

我的另一个猜测是你可能有一个“弱”的键盘属性。如果是这样,将其更改为“强”,它会解决问题。

【讨论】:

我明白这个问题太含糊了。我通过 Crashlytics 收到了崩溃,所以没有关于它是如何发生的信息,而且我个人在测试阶段从未见过这种崩溃。如果其他人遇到类似问题或遇到 UIRemoteKeyboardWindow 的奇怪行为,我只是在寻找见解。

以上是关于如何用键盘解决这个奇怪的崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 键盘:此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃

Xcode 9.2无法奇怪地调试自定义键盘扩展

Ipad Mini 2 上奇怪的 UIAccessibility 崩溃

如何用 js 获取虚拟键盘高度?(适用所有平台)

AS3 中有啥奇怪的语法。为啥这会使我的浏览器挂起//静默崩溃

当我尝试在 OpenCV IOS 中归因变量时发生奇怪的崩溃