El teclado aparece en la parte superior de la vista donde no se debe permitir la interacción del usuario

Tengo un proyecto basado en ventanas con dos UITextFields para recibir información del usuario. Ambos están en mi controlador de vista.

Tengo que analizar cosas en segundo plano, así que necesito algo que bloquee la interacción del usuario mientras tanto. Me encontré con esto Tutorial de Cocoa With Love para crear una vista de carga encima de todo. En realidad, funciona bastante bien, en su mayor parte; funciona siempre que el campo de texto renuncia al primer respondedor.

Sin embargo, hay una circunstancia en la que no funciona. Cuando escribo algo en el primer campo de texto y luego selecciono el segundo, aparecerá la pantalla de carga, pero el teclado está encima, por lo que el usuario podría escribir algo. Quiero que la pantalla de carga esté encima del teclado.

En el tutorial, dice llamar a la supervista del teclado. ¿Cuál es la supervista del teclado? Probé los siguientes fragmentos diferentes en mi controlador de vista, pero nada funciona.

loadingView = [LoadingView loadingViewInView:[self.view.window.subviews     objectAtIndex:0]];

loadingView = [LoadingView loadingViewInView:self.view];

loadingView = [LoadingView loadingViewInView:self.view.superview];

¿Cómo puedo hacer que la pantalla de carga aparezca encima de todo?

preguntado el 16 de mayo de 11 a las 18:05

1 Respuestas

La solución simple es cerrar el teclado cuando muestra la vista de carga. No creo que puedas poner nada encima del teclado.

Dicho esto, puede intentar usar la ventana raíz como vista para ver si tiene algún efecto.

contestado el 16 de mayo de 11 a las 22:05

¿Cómo puedo acceder a la ventana raíz en mi viewcontroller? - BObereder

self.view.window or [[UIApplication windows] objectAtIndex:0]. También podrías intentar lastObject en lugar de objectAtIndex:0 para ver si hay otra ventana en la parte superior (que es a veces el caso, como cuando se muestran UIAlertViews). - Ed Marty

No pensé que lo haría. Entonces, la única solución es descartar el teclado. - Ed Marty

bien, ahora tengo otro problema. Utilizo Editing did end Events para reconocer cuando el usuario cambia el campo de texto para poder comenzar a analizar. En el método llamado, también comienzo mi vista de carga que debería aparecer en la parte superior de todo, así que cuando aparece la vista, descarto el teclado con resignResponder PERO, por supuesto, siempre que lo hago, obtengo un evento Editing did End, así que llamo a esto una y otra vez de nuevo....... - BObereder

Probablemente debería hacer otra pregunta para resolverlo. Si se resuelve esta pregunta, acepte la respuesta o escriba su propia solución y acéptela. - Ed Marty

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.