2015-03-27 14 views
10

Quando si presenta uno schermo modale da una pagina nella navigazione basata su pagina, l'intero schermo si sposta verso l'alto e la barra di stato non è più visibile.
Ecco una gif della questione:

enter image description hereApple Watch: barra di stato non visibile dopo aver presentato una schermata modale dalla navigazione basata su pagina

Sto usando xCode 6.2 versione.
Questo non avveniva in xCode 6.2 Beta 4 ..
Non sono sicuro se questo è un problema di simulatore o questo avverrà effettivamente anche su un dispositivo reale.

Qualcuno ha lo stesso problema? C'è una soluzione?

Ho segnalato un bug alla mela (20109240) ed è stato contrassegnato come duplicato di (19862945), e quello è ancora aperto.
Grazie in anticipo

+1

Solo una nota che questo è stato risolto in Guarda OS 1.0.1. –

risposta

7

Questo è un problema noto nella versione finale che si presenta in due casi:

  1. Nel presentare un secondo controllore modale (paging o singola) su un controller modale paginazione esistente
  2. nel presentare un menu usando Forza tocco su un controller di paging modale

Questo è stato discusso in Apple Developer Forum, e l'unica soluzione che ho sentito parlare è uno che uso nella mia app. Sfortunatamente, non c'è un codice semplice da condividere che risolva il problema, quindi descriverò l'approccio (che considererei disordinato, ma funzionale).

Innanzitutto, è necessario tenere traccia delle presentazioni del controller di interfaccia. Ho una struttura per questo, ma potrebbe essere necessario eseguire il rollover. Quando un controller di interfaccia figlio ha il suo willActivate chiamato due volte di seguito (in altre parole, senza una chiamata a un controller di interfaccia figlio diverso), si può presumere che una modale sia stata presentata/ignorata su di essa.

Il controller di presentazione/genitore può quindi informare tutti i bambini che il bug del menu modale è avvenuto, e quei controller figlio possono mostrare una barra di stato sostitutiva con il proprio pulsante Annulla/Chiudi. Con un po 'di lavoro, è possibile ricreare una versione pixel-perfetta della barra di stato standard con un comportamento identico.

La svolta finale consiste nel rilevare quando l'app Watch è sospesa, quindi riprendere. In tal caso, willActivate viene anche chiamato due volte. Se non gestisci questa situazione, finirai per scoprire la barra di stato della sostituzione e ne avrai due sullo schermo contemporaneamente. Non è un grande scenario.

Ottenere questo diritto è molto difficile, ma funziona. Vorrei solo avere un semplice esempio di codice che potresti iniettare.

Update: ho spinto un po 'del mio codice soluzione alternativa per GitHub:https://github.com/mikeswanson/JBInterfaceController

+0

Mille grazie per la soluzione, dovrebbe essere più semplice nel mio caso perché ho solo un posto nell'app in cui spingo lo schermo modale da una pagina. Lei merita la mia generosità! –

+0

Una domanda: hai una soluzione quando visualizzi il menu (barra di stato) e scorri tra le pagine? Non voglio che il menu scorra insieme alla pagina. –

+0

Sfortunatamente, non c'è modo di creare una regione che non scorra da una pagina all'altra. Quindi, ogni pagina avrà la sua barra di stato di sostituzione. –

Problemi correlati