iPhone Cómo determinar qué orientaciones admite el controlador de vista anterior

Dado que el UIAlertView incorporado de iOS no nos brinda la capacidad de despellejar, he creado mi propia clase UIAlertViewCustom, que estoy usando en su lugar. Cualquiera de mis controladores de vista puede mostrar una instancia de UIAlertViewCustom de la misma manera que se usaría UIAlertView, excepto que mi versión permite desollar gráficos/fuentes/colores, etc.

Mi clase UIAlertViewCustom funciona mediante la creación de una nueva ventana clave y un controlador de vista raíz. Luego dibujo mi vista de mensaje en este nuevo controlador de vista raíz. (El controlador de vista que eligió mostrar el mensaje se ve en segundo plano, tal como lo vería con UIAlertView.

Todo esto está funcionando perfectamente. Hay una pieza de funcionalidad que me gustaría implementar pero no he descubierto cómo hacerlo. Me gustaría que cada instancia de UIAlertViewCustom sepa si debe o no girar automáticamente cuando cambia la orientación del dispositivo. Por supuesto, quiero saber qué orientaciones admite el controlador de vista debajo (el controlador de vista que creó la instancia de UIAlertViewCustom y la mostró). Si solo es compatible con el retrato, entonces no rotaré automáticamente el UIAlertViewCustom, etc.

No quiero que cada controlador de vista tenga que pasar una propiedad de orientación admitida a cada instancia de UIAlertViewCustom. Me gustaría que cada instancia de UIAlertViewCustom pueda determinar si debe girar automáticamente o no.

¡Cualquier ayuda será muy apreciada!

preguntado el 22 de mayo de 12 a las 20:05

1 Respuestas

Intentaría esto en su clase de controlador de vista:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return [[view superview] shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

No estoy seguro de si va a funcionar, pero ahí es donde empezaría. Esto es necesario porque la implementación predeterminada para esto devuelve YES para UIInterfaceOrientationPortrait y todo lo demás es NO.

Otra pequeña cosa. Apple ha reservado los prefijos que usa (NS, CF, CA, UI, etc...) y sus clases personalizadas no deberían usarlos.

EDITAR Cambió [supervisión propia] a [supervisión de vista]

contestado el 22 de mayo de 12 a las 21:05

Intenté esto, pero el compilador me dice que [la autosupervisión] no es válida en este contexto. - patrick100

Vi ese error antes de publicar, pero olvidé corregirlo. Un controlador UIView no es una vista. - Mark

Se me ocurrió una solución que parece funcionar perfectamente. Mi instancia de UIAlertViewCustom ya tenía una referencia de delegado al controlador de vista de llamadas. Entonces, pude usar eso para determinar qué orientaciones admitía el controlador de vista de llamada. Todavía no puedo responder mis propias preguntas, así que tuve que colocar la respuesta aquí como comentario. Además, gracias por la atención sobre el prefijo de la interfaz de usuario. - patrick100

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