Wie kann ich UIApplicationDelegate im gesamten Programm verwenden?
-
26-09-2019 - |
Frage
Ich möchte wissen, wann die Statusleiste Höhe als Ergebnis ändert sich z.B. ein Telefongespräch geführt. Also habe ich folgendes in meinem UIApplicationDelegate setzen:
-(void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame {
NSLog(@"yup, got here");
}
und in der Tat, wenn ich das in-Call-Statusleiste auf dem Simulator von jedem Bildschirm in der Anwendung wechseln, erscheint die Meldung in der Konsole, aber was ich will zu tun ist, eine UITextField oder 2 in einer anderen Klasse, da die Doppel bewegen -Höhe Statusleiste wird ein Bildschirm insbesondere vermasselt. Ich habe kein Glück gehabt mit dem automatischen Größen auf diesem Bildschirm.
Also meine Frage ist, wie gehe ich über Code Implementierung für einen Bildschirm und einen Bildschirm nur von dieser Methode in der AppDelegate? Sie feuert in allen Bildschirmen, aber ich brauche es nur in einem. Im Idealfall würde ich nur in dem einem Klasse Feuer ein Verfahren mag.
Lösung
Das System wird auch ein UIApplicationWillChangeStatusBarFrameNotification
zugleich posten. Haben Sie Ihre Ansicht-Controller auf diese Mitteilung hören. Keine Notwendigkeit zu Chaos mit dem AppDelegate überhaupt.
Andere Tipps
Gehen Sie mit Ole Antwort, aber für die Zukunft, wie Sie Ihre Stellvertretung erhalten ist:
MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;