2010-08-06 14 views
9

HIG (p.47) dice che devo essere in grado di gestire la barra di stato a doppia altezza che appare durante le telefonate o le registrazioni vocali.Come posso rilevare una barra di stato a doppia altezza?

Come esattamente gestisco questa situazione?

In realtà ho solo 1 schermata in cui una tastiera con barra degli strumenti si sovrappone a un campo di testo quando viene visualizzata la barra di stato a doppia altezza: su altre schermate le cose sono solo un po 'elaborate ma utilizzabili.

Se riesco a rilevare che esiste una barra di stato a doppia altezza, potrei forse regolare la posizione dei campi di testo o renderli temporaneamente più brevi ma è possibile rilevare quando la barra di stato a doppia altezza è lì?

EDIT: Forse se ci fosse un modo per ottenere le coordinate assolute di una cosa nota, come la barra di navigazione, e se fosse +20 pixel spento, mi piacerebbe pensare che la barra di stato a doppia altezza è presente. Pensieri?

E una questione secondaria, se questo (o nulla) funziona, vorrei solo per nascondere la barra di stato regolare usando

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

ma io non voglio nascondere sia - in pratica un modo pigro non dover toccare nessuno dei miei schermi - se c'è il doppio, rendilo di nuovo singolo nascondendo la normale barra di stato. Il codice sopra menzionato nasconderà entrambi?

risposta

16

È possibile monitorare questi call-back di UIApplicationDelegate:

  • applicazione: willChangeStatusBarFrame:

  • applicazione: didChangeStatusBarFrame:

Ed è facile per testare questo in iPhone simulatore: Hardware-> Attiva barra di stato In-Call

A seconda della situazione, le tue viste e le cose in esse contenute possono essere ridimensionate automaticamente per adattarsi allo spazio - controlla l'area Dimensione vista della finestra di ispezione in Interface Builder su vari oggetti

+0

Questo indirizzo indica la situazione in cui l'utente si trova su un chiamare o in procinto di registrare THEN va nella mia app? O monitorerà solo un cambiamento una volta nell'app? –

+0

ok, forse puoi controllare UIApplicationStatusBarFrameUserInfoKey –

+0

grazie per avermi indicato nella giusta direzione. per gestire l'origine di una chiamata prima di accedere all'app, in alcuni viewDidLoad è sufficiente controllare la dimensione della cornice della barra di stato - se oltre 20, assumere di conseguenza la chiamata in corso e la visualizzazione della dimensione. Sto avendo problemi con il delegato. Si attiva quando il metodo viene inserito nel mio AppDelegate ma non quando nella classe in cui ho bisogno anche se adotto UIApplicationDelegate in quella classe, quindi non sono sicuro di come gestire una chiamata che inizia o termina all'interno di ogni classe - qual è il bridge da il metodo in AppDelegate alla classe in cui voglio cambiare la vista? –

Problemi correlati