UIWindow endDisablingInterfaceAutorotationanimated d'erreur s'affiche dans la console lorsque le clavier est rejeté de manière interactive à partir de collectionView dans iOS9 seulement
J'obtiens cette erreur étrange dans iOS9 seulement:
[UIWindow endDisablingInterfaceAutorotationAnimated:] called on UITextEffectsWindow: ...without matching
-beginDisablingInterfaceAutorotation. Ignoring.
chaque fois que j'ai fermer le clavier de manière interactive en les faisant glisser vers le bas à partir de l'intérieur de mon collectionView. Je n'ai pas l'erreur en rejetant le clavier avec un robinet d'un geste ou en appuyant sur entrée. C'est très frustrant. Même si je ne suis pas d'observer n'importe quel clavier notifications j'obtiens toujours cette erreur sur cette interactive clavier licenciement. Je me demande si quelqu'un d'autre a rencontré cette erreur et a trouvé une solution. J'ai un inputAccessoryView composé d'un textView monté sur le clavier.
- Je le vois ainsi. Peut-être la peine de mentionner sur iOS 9 seulement. L'exécution même application sur iOS 8 n'a pas d'imprimer quoi que ce soit dans la console.
- Merci pour votre commentaire. Vous avez raison sur elle ne se produit que dans iOS9. J'ai modifié la question afin de refléter cela.
- C'est clairement un système de bug
- Toujours présent sur iOS 10.
- Je suis présent sur iOS 11 lorsque le balayage sur la tableView d'un UISearchResultsController... L'application se bloque après avoir appuyé sur une cellule après que l'erreur qui s'est passé
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème sur iOS9, mais avec une tableView. J'ai mis en place cette avec
self.tableView.keyboardDismissMode = .Interactive
et il a travaillé pour moi.inputAccessoryView
sur mon domaine. Ils se cachaient en 2 étapes: clavier et après queinputAccessoryView
. Cela m'a aidé. Ils se cachent en même temps maintenant.textView.resignFirstResponder()
pourview.endEditing(true)
parce que j'ai 5 textFields. Espérons qu'il pourrait aider quelqu'un d'autreChoses à Vérifier
Il semble que plusieurs autres de SORTE que les utilisateurs ont eu des expériences similaires dans une variété de conditions. Découvrez ce fil. Depuis, il pourrait y avoir beaucoup de choses qui se passent à l'origine de ce problème, vous pouvez consulter le fil fourni pour voir si vous pouvez trouver un correspondant de cas d'utilisation. Il est difficile de savoir comment vous êtes rejetant le clavier, mais vous voudrez peut-être appeler quelque chose comme ceci à partir d'une méthode ou comme un geste de reconnaissance (plutôt qu'un licenciement à partir d'un objet spécifique):
UIApplication.sharedApplication().sendAction("resignFirstResponder", to: nil, from: nil, forEvent: nil)
Le fil fourni, la nature de la question dans la plupart des cas de double appel lors de la présentation ou le rejet de la vue. J'ai aussi vu des questions où j'ai un storyboard segue connecté (ou, dans certains cas, il a été enlevé, mais le xml était encore dans la table de montage en mode code) et d'un code basé sur des enchaînements (performSegueWithIdentifier...) pour la même animation (ce qui provoque un affichage à l'/rejeter des appels).
Je regardais le journal pour voir ce que les appels sont enregistrés juste avant l'erreur, puis faire une recherche dans le journal pour voir si il y a une redondance d'appel. De nouveau, il pourrait également être une redondance dans les comportements/animations/mise en page sur le storyboard et les appels faits dans le code.
Mise à JOUR
Les commentaires de l'OP, m'a rappelé que, dans certains cas, en particulier celles impliquant des appels lors de présentations/licenciements, j'ai vu des cas où la seule façon de réussir à avoir un développeur de la fonction de travail est l'envelopper dans un dispatch_async appel. Il y a certains systèmes critiques des appels qui ne semblent pas bien fonctionner si le code du développeur est introduit au cours de la même image.
Un exemple concret est cet appel qui est à l'intérieur de
willMoveToWindow
. Dans ce cas j'ai un weakSelf référence à la vue et il vous suffit de vérifier la newWindow pour la valeur nil (indique que la vue est rejetée) avant d'appeler mon code.Donc, dans cet exemple, si l'on supprime l'envoi appel, puis le code du développeur serait la cause de la totalité de l'app crash. Je suppose que le système de transition d'appels (liées à la transposition vers/à partir de la fenêtre) peut être une source de conflit avec n'importe quel développeur de demandes à l'époque.
resignFirstResponder
à l'affichage de texte. L'envoi de laresignFirstResponder
action le répondeur de l'arbre n'empêche pas l'erreur, mais au moins mon entrée accessoire de vue est correctement supprimé de l'écran. Je me demandais si il n'a rien à voir avec le fait que mon entrée accessoire de vue conserve une (forte) de référence à la l'affichage de texte... va enquêter et de faire rapport de toute nouvelle information.J'ai rencontré ce problème et il bousille mon point de vue. C'est de cette façon-je le résoudre.
J'ai eu un
viewController
présentés sur lestextFieldShouldBeginEditing
. Dans leviewController
, untextField
a été mis àbecomeFirstResponder
dansviewDidLoad
.La solution pour moi est de déplacer le
becomeFirstResponder
àviewDidAppear
.becomeFirstResponder
appel dansviewDidAppear
.