Cómo crear una superposition transparente en toda la pantalla, incluido el keyboard activo.

He podido colocar una vista semitransparente sobre todas las otras vistas, incluido el keyboard, para tildar la pantalla con este código:

int count = [[[UIApplication shanetworkingApplication]windows]count]; [[[UIApplication shanetworkingApplication] windows] objectAtIndex:count-1]addSubview:tintView]; 

Ahora me he encontrado con un problema. Mi aplicación utiliza MessageUI.framework para mostrar un MFMessageComposeViewController, que permite al usuario enviar un post de text. Aquí es donde encuentro el problema.

Cuando ejecuto el código anterior en este caso (cuando se muestra la vista del post), funciona correctamente. El problema es que el usuario ya no puede interactuar con la vista de posts que se encuentra debajo. Estuve estableciendo userinteractionenabled a NO en mi tintView, pero en este caso no ayuda al problema.

Sin embargo, establecer la vista de tinte oculta en SÍ permite la interacción. Algo que al cambiar esta propiedad permite interactuar con la vista del post. Obviamente, quiero que el tintView sea visible, sin embargo.

I NS Registré las vistas en la UIWindow superior y encontré que UIRemoteView (en la que no pude encontrar información alguna pero que parece ser lo que muestra las vistas en MessageUI.framework) es la vista que no recibe el toque cuando el tintView está por encima.

¿Cómo puedo permitir la interacción con MFMessageComposeViewController incluso con otra UIView mostrada sobre ella? Userinteractionenabled no funciona en este caso, pero hace que oculte la vista (que no es lo que quiero).

Creo que puedes anular -hitTest: en tu vista de tinte para devolver nil

PERO: parece una mala práctica insert subvistas en windows que no "posee" … Es probable que creas tu propia window para esto … ¿Puedo preguntar por qué quieres tildar el keyboard?

EDITAR:

Escribí un código que demuestra este funcionamiento:

https://gist.github.com/3139219

EDIT 2: Bueno, esto funciona solo para un keyboard, pero se rompe para los controlleres de vista modal, así que regresa al tablero de dibujo … ¡lo siento!