Come faccio a individuare la finestra del messaggio GameKit?
-
02-10-2019 - |
Domanda
Quando un applicazione per iPhone con lanci GameKit, e il dispositivo è già connesso al GameCenter, un piccolo diapositive dei messaggi in sulla parte superiore dello schermo, dicendo qualcosa sulla falsariga di "Bentornato% username!".
Quello che ho scoperto è il seguente: che appare messaggio nella sua propria UIWindow
che alla fine scivola il messaggio via e si libera. Quando il messaggio è sullo schermo, è possibile accedere il seguente:
all windows: (
"<UIWindow: 0x31fc70; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x31fe60>>",
"<UIWindow: 0x3874c0; frame = (0 0; 320 480); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x387590>>"
)
Ho bisogno di distinguere le due finestre nel caso generale - ho bisogno di qualcosa lungo le linee di una funzione -(UIWindow *)topNormalWindow
che restituirà la finestra in primo piano, che non sia è A) un avviso o B) il messaggio GameCenter. Ho già un -. (UIWindow *) topNonAlertWindow che determina la finestra in alto che non è un allarme, ma il messaggio non è GameKit, ma né è (per i miei scopi) una finestra normale
Inoltre, che cosa fa autoresize = RM+BM;
media?
Soluzione
ho risolto questo problema semplicemente controllando se la finestra ha avuto un GKGameEventView
come una visualizzazione secondaria.
Altri suggerimenti
Ho usato Game Center e l'aggiunta di un sistema di href="http://typeoneerror.com/blog/post/game-center-achievement-notification" rel="nofollow"> . Ho la finestra in alto in questo modo:
[[UIApplication sharedApplication] keyWindow]
non sembra in conflitto con avvisi o la finestra di autenticazione centro del gioco. In realtà, le notifiche vengono aggiunti in quella finestra, quindi penso che uno è su un altro livello sopra qualsiasi cosa è possibile accedere.
Per quanto riguarda la tua ultima domanda:
Che cosa significa AutoResize = RM + BM; significa?
RM + BM un'abbreviazione per l'maschere UIViewAutoresizing
, UIViewAutoresizingFlexibleRightMargin
e UIViewAutoresizingFlexibleBottomMargin
, rispettivamente. Se si seleziona un controllo dell'interfaccia utente in Interface Builder e andare al Dimensione Ispettore , la mostra di grafica ridimensionamento automatico rosso "I-Beams", in cui il controllo è ancorato al suo punto di vista di delimitazione. Se Autoresizing = RM+BM
, vuol dire che si dovrebbe vedere i primi e di ancoraggio a sinistra travi (le travi a) in rosso, ma quelli in basso a destra e sono in grigio fuori. Questo significa essenzialmente che i margini destro e inferiore sono flessibili, e il gestore di layout è libero di regolare loro durante il rendering della vista.