web-dev-qa-db-ja.com

UIWindow endDisablingInterfaceAutorotationAnimatedエラーは、iOS9のcollectionViewからキーボードが対話的に閉じられたときにコンソールに表示されます

私はiOS9でのみこの奇妙なエラーを受け取っています:

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

collectionView内から下にドラッグして、キーボードをインタラクティブに閉じます。タップジェスチャでキーボードを閉じるか、Enterキーを押してもエラーは発生しません。とてもイライラします。キーボードの通知を観察しなくても、この対話型キーボードの解除でこのエラーが表示されます。他の誰かがこのエラーに遭遇し、解決策を見つけたのだろうか。キーボードにマウントされたtextViewで構成されるinputAccessoryViewがあります。

61
alionthego

IOS9でもtableViewで同じ問題が発生しました。これを実装しましたとともにself.tableView.keyboardDismissMode = .Interactiveそしてそれは私のために働いた。

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

確認事項

他のいくつかのSOユーザーはさまざまな条件下で同様の経験をしているようです。これをチェックしてください thread 。提供されているスレッドを確認して、一致するユースケースを見つけることができるかどうかを確認することをお勧めします。キーボードを閉じる方法は不明ですが、メソッドまたはジェスチャレコグナイザーとしてではなく、特定のオブジェクトからの直接解雇):

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

提供されたスレッドから、ほとんどの場合、問題の性質は、ビューの表示または削除中の呼び出しの重複でした。また、ストーリーボードセグエが接続されている(または場合によっては削除されましたが、XMLはストーリーボードコードビューに残っていた)問題と、同じアニメーションのコードベースのセグエ(performSegueWithIdentifier ...)の問題も見ました2つの表示/終了呼び出しが発生します)。

ログを見て、エラーの直前に記録されている呼び出しを確認し、ログビューで検索を実行して、冗長な呼び出しがあるかどうかを確認します。この場合も、ストーリーボードの動作/アニメーション/レイアウト、およびコードで行われた呼び出しに冗長性がある可能性があります。

[〜#〜] 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)
     }

 })
6
Tommie C.

私はこの問題に遭遇し、私の見解を台無しにしました。これは私がそれを解決する方法です。

viewControllertextFieldShouldBeginEditingが表示されていました。 viewControllerで、textFieldbecomeFirstResponderviewDidLoadに設定されました。

私にとっての解決策は、becomeFirstResponderviewDidAppearに移動することです。

2
okysabeni

トランジションアニメーションの表示/非表示中の場合、それを再確認します

transitionContext.completeTransition(!transitionContext.transitionWasCancelled)

複数回呼び出されることはありません...簡単な間違いです。

0
slimbikr