swift - tamaño - UIWindow endDisablingInterfaceAutorotation Un error animado aparece en la consola cuando el teclado se descarta de forma interactiva de collectionView solo en iOS9
teclados en iphone (3)
Cosas para verificar
Parece que varios otros usuarios de SO han tenido experiencias similares en una variedad de condiciones. Mira este thread . Dado que podrían estar sucediendo muchas cosas que causen este problema, es posible que desee revisar el hilo proporcionado para ver si puede encontrar un caso de uso coincidente. No está claro cómo descarta el teclado, pero es posible que desee llamar a algo así desde un método o como un reconocedor de gestos (en lugar de un rechazo directo de un objeto específico):
UIApplication.sharedApplication().sendAction("resignFirstResponder", to: nil, from: nil, forEvent: nil)
Según el hilo proporcionado, la naturaleza del problema en la mayoría de los casos fue una llamada duplicada durante la presentación o el rechazo de la vista. También he visto problemas en los que tengo un segue de guión gráfico conectado (o en algunos casos se eliminó pero el xml todavía estaba en la vista de código del guión gráfico) y un segue basado en código (performSegueWithIdentifier ...) para la misma animación (que provoca dos llamadas de visualización / descarte).
Miraría el registro para ver qué llamadas se están registrando justo antes del error y luego buscaría en la vista de registro para ver si hay una llamada redundante. Nuevamente, también podría haber una redundancia en los comportamientos / animaciones / diseños en el guión gráfico y las llamadas realizadas en el código.
ACTUALIZAR
Los comentarios del OP me recordaron que, en algunos casos, especialmente aquellos que involucran llamadas durante presentaciones / rechazos, he visto casos en los que la única forma de que una función de desarrollador funcione con éxito es envolverla en una llamada dispatch_async. Hay algunas llamadas de sistemas críticos que parecen no funcionar bien si se introduce código de desarrollador durante los mismos marcos.
Un ejemplo concreto es esta llamada que se encuentra dentro de
willMoveToWindow
.
En este caso, tengo una referencia débil de sí mismo a la vista y simplemente reviso la nueva ventana para ver el valor nulo (indica que la vista se está descartando) antes de llamar a mi código.
Entonces, en este ejemplo, si uno elimina la llamada de despacho, entonces el código de desarrollador provocaría que se bloquee toda la aplicación. Supongo que las llamadas de transición del sistema (relacionadas con la transposición a / desde la ventana) pueden estar en conflicto con lo que el desarrollador solicite en ese momento.
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)
}
})
Recibo este extraño error solo en iOS9:
[UIWindow endDisablingInterfaceAutorotationAnimated:] called on UITextEffectsWindow: ...without matching
-beginDisablingInterfaceAutorotation. Ignoring.
cada vez que descarto el teclado de forma interactiva arrastrando hacia abajo desde mi collectionView. No obtengo el error al cerrar el teclado con un gesto de toque o presionando enter. Es muy frustrante. Incluso si no observo ninguna notificación de teclado, sigo recibiendo este error en este cierre de teclado interactivo. Me pregunto si alguien más se ha encontrado con este error y ha encontrado una solución. Tengo un inputAccessoryView que consiste en un textView montado en el teclado.
Encontré este problema y desordenó mi punto de vista. Así es como lo resuelvo.
Estaba teniendo un
viewController
presentado en
textFieldShouldBeginEditing
.
En
viewController
, se configuró un
textField
para
becomeFirstResponder
en
viewDidLoad
en
viewDidLoad
.
La solución para mí es mover el
becomeFirstResponder
para
viewDidAppear
.
Tuve el mismo problema en iOS9 pero con un tableView.
Implementé esto
junto con
self.tableView.keyboardDismissMode = .Interactive
y funcionó para mí.
// Dismiss keyboard when scrolling
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
textView.resignFirstResponder()
}