Putting ein UIView oder UIWindow Statusbar oben
Mein Ziel ist, zeichnen Sie eine unsichtbare Schaltfläche über die Statusleiste auf der Oberseite meiner iPhone app (dimension 320*20 Pixel).
Egal was ich versuche, etwas buggy ist:
-
Zum Beispiel, habe ich versucht, eine neue Ansicht erstellen. Wenn ich will, um die Ansicht zu platzieren auf der Oberseite meiner app, es verschwindet immer hinter der status-bar, anstatt davor!
-
Fand ich eine tolle Idee auf Stackoverflow:
Hinzufügen UIView Über Alle Anderen Ansichten, Einschließlich Der StatusBar
Auch wenn eine zweite UIWindow ist nicht zu empfehlen, ich habe versucht, es zu implementieren. Es funktionierte, wie ich wollte, bis zu dem Augenblick, bemerkte ich ein problem: die Tastatur erscheint nicht mehr, wenn benötigt (z.B. beim Klick in ein Textfeld)!
Wie kann ich eventuell dieses Problem beheben? Oder gibt es eine bessere Lösung für mein problem? Dies ist mein code für das erzeugen des zweiten Fensters:
//Create window
statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,320,20)];
statusWindow.windowLevel = UIWindowLevelStatusBar;
[statusWindow makeKeyAndVisible];
//Create statusBarButton
statusBarButton = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect buttonFrame2 = statusBarButton.frame;
buttonFrame2.size = CGSizeMake(320,20);
statusBarButton.frame = buttonFrame2;
[statusBarButton addTarget:self action:@selector(goTop) forControlEvents:UIControlEventTouchUpInside];
//Place button into the new window
[statusWindow addSubview:statusBarButton];
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Dokumentation -[UIWindow makeKeyAndVisible]:
Den "key-Fenster" ist die eine, die bekommt bestimmte input-Veranstaltungen; text-Felder in einem nicht-Schlüssel-Fenster funktioniert möglicherweise nicht. Es gibt zwei Dinge, die Sie tun können:
statusWindow.hidden = NO
statt (aber ich sehe nicht, warum es wäre standardmäßig ausgeblendet). Ich glaube nicht, können Sie "Anzeige vor die anderen windows -" wie -makeKeyAndVisible; das windows nicht über ein superview können Sie call-bringSubviewToFront: auf IIRC.in der Datei AppDelegate
oder in einer anderen Klasse
und wenn Sie wollen Statusleiste, um nach oben u wieder einstellen können
Wenn andere Benutzer implementieren möchten, hier meine Lösung:
statusWindow
auf Ihre view-Hierarchie so weit wie ich das beurteilen kann. Wie bekommst du es angezeigt?Versuchen:
Ich glaube nicht, seine möglich, um einen Blick auf die Statusleiste, obwohl.