pantalla - El teclado iOS(dentro de UIRemoteKeyboardWindow) no se muestra cuando UITextField se convierte en el primer respondedor en el bloque de finalizaciĆ³n de Touch ID(iOS 10)
que es 3d touch iphone xr (2)
Como solución temporal temporal, llame a becomeFirstResponder
después de que un retraso solucionó esto, sin embargo, no está contento con la solución hacky .
Recientemente descubrí un problema en mi aplicación que solo parece ocurrir en iOS 10 donde el teclado del sistema no se muestra cuando se activa mediante programación un campo de texto para convertirse en el primer respondedor dentro de un controlador de finalización, específicamente el controlador de finalización del cual recibo respuesta. un intento de Touch ID.
La parte loca de este problema es que, aunque no se muestra el teclado, el área en el iPhone donde normalmente estaría el teclado todavía responde a las entradas táctiles, ¡como si el usuario estuviera escribiendo en el teclado!
Después de investigar mucho y solucionar el problema, me encontré con el hecho de que la propiedad hidden
está establecida en YES
en la UIRemoteKeyboardWindow
privada que se crea después de que se becomeFirstResponder
en el primer campo de texto en el campo de texto. En otras situaciones en las que muestro el teclado, el valor de esa propiedad hidden
se establece en NO
.
¿Alguien más se ha encontrado con este problema en iOS 10? Si es así, ¿alguien encontró una solución a esto? Intenté establecer manualmente el valor hidden
en YES
en la instancia de la ventana, pero eso no tuvo ningún efecto en ello. Estoy bastante agarrado a pajitas en este punto.
Archivos adjuntos:
Aquí está la salida de las ventanas de la instancia de UIApplication
cuando el campo de texto se convierte en el primer respondedor fuera del controlador de finalización de Touch ID (preste mucha atención a UIRemoteKeyboardWindow
):
Y cuando el UITextField
convierte en el primer respondedor dentro del controlador Touch ID ...
Primera actualización
Por lo tanto, no consideré que se haya becomeFirstResponder
el becomeFirstResponder
en el hilo principal antes de que algunos lo hayan señalado, pero desafortunadamente, no resolvió el problema; sin embargo, hice algunos descubrimientos adicionales. El problema de la ventana hidden
parece deberse a la salida de los detalles de las UIApplication
instancia de UIApplication
inmediatamente después de emitir la acción becomeFirstResponder
. Después de hacer eso, establezco un punto de interrupción en la devolución de llamada de edición de UITextField
y procedo a interactuar con el teclado (que es invisible), y cuando muestro los detalles de la ventana, no parece que la propiedad hidden
se haya configurado en YES
( lo que posiblemente puede descartar que la propiedad se establezca como la causa del problema), pero todavía tengo un teclado invisible. Comencé a depurar la jerarquía de vistas y a continuación se muestra una captura de pantalla de cómo se ve cuando examino la ventana del teclado:
Esperemos que puedan ver lo que descubrí aquí, que es que las teclas están presentes, pero parece que hay una vista blanca que las bloquea. La cuestión es que ni siquiera veo esas vistas en blanco en la pantalla de mi aplicación. Solo veo lo que normalmente está detrás del teclado cuando está presente.
Parece que el problema también se presenta en diferentes escenarios: el teclado podría ser invisible incluso si selecciona el campo de texto manualmente después de cancelar la alerta de TouchId.