2010-08-06 10 views
9

El HIG (p.47) dice que tengo que ser capaz de manejar la barra de estado de doble altura que aparece durante las llamadas telefónicas o las grabaciones de voz.¿Cómo detecto una barra de estado de doble altura?

¿Cómo manejo exactamente esta situación?

Realmente solo tengo 1 pantalla donde un teclado con barra de herramientas sobre ella se superpone a un campo de texto cuando se muestra la barra de estado de doble altura - en otras pantallas las cosas están un poco arrugadas pero utilizables.

Si pudiera detectar que existe una barra de estado de doble altura, tal vez podría ajustar la ubicación de los campos de texto o hacerlos temporalmente más cortos pero ¿es posible detectar cuando la barra de estado de doble altura está allí?

EDITAR: Tal vez si hubiera una manera de obtener las coordenadas absolutas de una cosa conocida, como la barra de navegación, y si fuera de +20 píxeles, supondría que la barra de estado de doble altura está presente. ¿Pensamientos?

Y una cuestión secundaria, si esto (o nada) funciona, sólo me gustaría para ocultar la barra de estado regular usando

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO] 

pero no quiero ocultar tanto - básicamente una forma perezosa no tener que tocar ninguna de mis pantallas; si el doble está allí, vuelva a hacer una sola ocultando la barra de estado normal. ¿El código anterior ocultará ambos?

Respuesta

16

Puede supervisar estas devoluciones de llamadas de UIApplicationDelegate:

  • aplicación: willChangeStatusBarFrame:

  • aplicación: didChangeStatusBarFrame:

Y es fácil de probar esto en el iPhone simulador: Hardware-> Alternar en la barra de estado de llamada

Dependiendo de su situación, sus vistas y las cosas en ellas pueden redimensionarse automáticamente para ajustarse al espacio: consulte el área Tamaño de vista de la ventana del inspector en el Creador de interfaces en varios objetos

+0

¿Esto resolverá la situación en la que el usuario está en un llamar o en el proceso de grabación ENTONCES va a mi aplicación? ¿O solo controlará un cambio una vez en la aplicación? –

+0

bien, tal vez pueda verificar UIApplicationStatusBarFrameUserInfoKey –

+0

gracias por apuntarme en la dirección correcta. para manejar una originación de llamada antes de ingresar a la aplicación, en algunos casos de viewDidLoad simplemente verifico el tamaño de la trama de la barra de estado; si es mayor de 20, asuma la llamada en progreso y la vista de tamaño en consecuencia. Estoy teniendo problemas con el delegado. Se dispara cuando el método se coloca en mi AppDelegate, pero no en la clase en la que lo necesito aunque adopte UIApplicationDelegate en esa clase, por lo que no estoy seguro de cómo manejar una llamada que comienza o finaliza dentro de cada clase: ¿cuál es el puente de el método en el AppDelegate a la clase en la que quiero cambiar la vista? –

Cuestiones relacionadas