que pantalla haptic funciona como activar ios objective-c uitextfield ios10 becomefirstresponder

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.