UIWindow endDisablingInterfaceAutorotationAnimated错误出现在控制台中时,仅在iOS9中从collectionView以交互方式解除键盘

我只在iOS9中得到这个奇怪的错误:

[UIWindow endDisablingInterfaceAutorotationAnimated:] called on UITextEffectsWindow: ...without matching -beginDisablingInterfaceAutorotation. Ignoring. 

任何时候我通过从我的collectionView中拖动下来交互式地closures键盘。 我不会因轻击手势或按回车键来解决键盘错误。 这是非常令人沮丧的。 即使我没有看到任何键盘通知,我仍然在这个交互式键盘解雇上得到这个错误。 我想知道是否有其他人遇到这个错误,并find了解决办法。 我有一个inputAccessoryView组成的键盘上安装的textView。

我在iOS9上有同样的问题,但有一个tableView。 我 self.tableView.keyboardDismissMode = .Interactive 一起实现了这一点,它为我工作。

 // Dismiss keyboard when scrolling func scrollViewWillBeginDragging(scrollView: UIScrollView) { textView.resignFirstResponder() } 

要检查的事情

看来,其他几个SO用户在各种条件下也有类似的经历。 看看这个线程 。 由于可能会有很多事情发生导致此问题,因此您可能需要查看提供的线程以查看是否可以find匹配的用例。 目前还不清楚你是如何解散键盘的,但是你可能想从一个方法或者一个手势识别器(而不是直接从一个特定对象中解雇)调用这样的东西:

UIApplication.sharedApplication().sendAction("resignFirstResponder", to: nil, from: nil, forEvent: nil)

从提供的线索来看,在大多数情况下,问题的性质在提出或解除观点时是重复的。 我也看到了一些问题,我有一个故事板连接(或在某些情况下,它被删除,但XML仍然在故事板代码视图)和一个基于代码的segue(performSegueWithIdentifier …)相同的animation导致两个显示/解除呼叫)。

我会查看日志,以查看错误发生之前正在logging哪些调用,然后在日志视图中查找是否存在多余的调用。 同样,故事板上的行为/animation/布局和代码中的调用也可能存在冗余。

UPDATE

来自OP的意见提醒我,在某些情况下,尤其是在演示/解雇过程中涉及到呼叫的情况下,我看到了成功开发开发人员function的唯一方法是将其封装到dispatch_async调用中。 有一些关键的系统调用,如果在相同的帧中引入开发者代码,那么这些调用看起来效果不好。

一个具体的例子是在willMoveToWindow内的这个调用。 在这种情况下,我有一个weakSelf引用的视图,并简单地审查nil值(表示视图正在被驳回)之前调用我的代码。

所以在这个例子中,如果删除了调度调用,那么开发者代码会导致整个应用程序崩溃。 我猜测系统转换调用(涉及到调入窗口)可能与当时的开发人员请求有冲突。

  dispatch_async(dispatch_get_main_queue(), { () -> Void in //the saved flag is true only when user hits the done button if !(weakSelf!.saved) { weakSelf?.completeNotes(nil) } }) 

我遇到了这个问题,弄乱了我的观点。 这是我如何解决它。

我有一个viewController被呈现在textFieldShouldBeginEditing 。 在viewControllertextField被设置为viewDidLoad becomeFirstResponder

对我来说,解决scheme是将becomeFirstResponder移到viewDidAppear