2009-12-23 10 views
5

ich ein Bild Picker mache, das ein n von n Raster von auswählbaren Taste angezeigt wird, wenn der Aufnehmer nach oben ausgeklappt ist. Dieses Raster von Schaltflächen wird in einem NSWindow enthalten sein, aber ich möchte, dass das Fenster automatisch geschlossen wird, wenn der Benutzer auf den Bildschirm klickt. Gibt es ein Flag, das so eingestellt werden kann, dass es automatisch geschlossen wird, wenn das Fenster den Fokus verliert?Schließen Programmatically eine NSWindow wenn es den Fokus verliert

Antwort

8

Es gibt zwei Benachrichtigungen, die Sie interessieren könnten: NSWindowDidResignKeyNotification und NSWindowDidResignMainNotification. Sie können sich einfach für den, an dem Sie interessiert sind, in watchFromNib registrieren (oder windowDidLoad, wenn Sie einen benutzerdefinierten Controller haben) und dann das Fenster entsprechend schließen oder ausblenden, wenn Sie die Benachrichtigungen erhalten.

Ich will nicht zu viel tauchen Sie ein in, ob dies eine gute Idee ist von UI Standpunkt. Es könnte jedoch eine bessere Idee sein, entweder eine Overlay-Ansicht oder ein Panel für die von Ihnen beschriebene Funktionalität zu verwenden.

3

Sie könnten NSPanel überprüfen. Es ist eine NSWindow-Unterklasse, die sich versteckt, wenn sich die App im Hintergrund befindet, und dieses Verhalten ähnelt dem, wonach Sie suchen. obwohl

+0

Die Frage ist, um das Fenster zu schließen, wenn das Fenster ** ** Fokus verliert. 'NSPanel' wird ausgeblendet, wenn die ** App ** den Fokus verliert. – Jay

Verwandte Themen