Come si usa UIApplicationDelegate tutto il programma?
-
26-09-2019 - |
Domanda
Vorrei sapere quando la barra di stato cambia altezza a causa per esempio di una telefonata in corso. Così ho messo il seguente nel mio UIApplicationDelegate:
-(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame {
NSLog(@"yup, got here");
}
e in effetti quando ho attivare o disattivare la barra di stato della chiamata sul simulatore da qualsiasi schermata dell'applicazione, il messaggio viene visualizzato nella console, ma quello che voglio fare è quello di spostare un UITextField o 2 in un'altra classe in quanto il doppio barra di stato -Altezza è in disordine una schermata in particolare. Ho avuto fortuna con il ridimensionamento automatico in questa schermata.
Quindi la mia domanda è: come posso fare per implementare il codice per uno schermo e uno schermo solo da questo metodo nel AppDelegate? Spara a tutti gli schermi ma ho solo bisogno di uno. Idealmente mi piacerebbe un metodo solo in una classe al fuoco.
Soluzione
Il sistema sarà anche inviare un UIApplicationWillChangeStatusBarFrameNotification
allo stesso tempo. Avere il vostro View Controller ascolta questa notifica. Non c'è bisogno di pasticciare con il delegato applicazione a tutti.
Altri suggerimenti
Vai con la risposta di Ole, ma per riferimento futuro, come si arriva a delegato è:
MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;