当从iOS9中的collectionView以交互方式关闭键盘时,UIWindow endDisablingInterfaceAutorotationAnimated错误出现在控制台中

ali*_*ego 61 keyboard collectionview swift ios9

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

[UIWindow endDisablingInterfaceAutorotationAnimated:] called on UITextEffectsWindow: ...without matching
-beginDisablingInterfaceAutorotation. Ignoring.
Run Code Online (Sandbox Code Playgroud)

我可以通过从我的collectionView中向下拖动来交互式地关闭键盘.我没有通过轻击手势或按Enter键解除键盘错误.这非常令人沮丧.即使我没有观察到任何键盘通知,我仍然会在此交互式键盘解除时收到此错误.我想知道是否有其他人遇到过这个错误并找到了解决方案.我有一个inputAccessoryView,由一个安装在键盘上的textView组成.

小智 26

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

// Dismiss keyboard when scrolling
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
    textView.resignFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)

  • @izilotti它为我,但我已经改变了`textView.resignFirstResponder()``为view.endEditing(真)`因为我5个文本框.希望它可以帮助别人 (3认同)

Tom*_* C. 6

要检查的事情

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

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

从提供的主题中,在大多数情况下,问题的性质是在呈现或解除视图期间的重复调用.我也看到了一些问题,我将故事板segue连接起来(或者在某些情况下它已被移除,但xml仍在故事板代码视图中)和基于代码的segue(performSegueWithIdentifier ...)用于同一动画(其中导致两个显示/解除呼叫).

我会查看日志以查看错误发生之前正在记录的调用,然后在日志视图中执行查找以查看是否存在冗余调用.同样,故事板上的行为/动画/布局和代码中的调用也可能存在冗余.

UPDATE

来自OP的评论提醒我,在某些情况下,特别是在演示/解雇期间涉及呼叫的情况,我已经看到成功开发人员功能工作的唯一方法是将其包装到dispatch_async调用中.如果在相同的帧期间引入开发人员代码,则有些关键系统调用看起来效果不佳.

一个具体的例子就是这个调用willMoveToWindow.在这种情况下,我有一个对视图的weakSelf引用,只需在调用我的代码之前查看newWindow的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)
     }

 })
Run Code Online (Sandbox Code Playgroud)