2011-10-12 13 views
8

Mam app, który używa NSStatusItem. Na małych ekranach na pasku stanu nie ma zbyt wiele miejsca. Gdy użytkownik przełącza się do aplikacji z wieloma pozycjami menu, mój status zostaje ukryty. Czy istnieje sposób, aby uzyskać powiadomienie o tym?Sprawdzanie, kiedy NSStatusItem jest ukryty

Co próbowałem dotąd:

  • Sprawdziłem jeśli NSNotification wypala: Nie
  • sprawdziłem czy statusView zostanie usunięty z hierarchii Widok: Nie
  • Sprawdziłem isHiddenOrHasHiddenAncestor: Nie

Oto kod, którego używam do utworzenia elementu statusu.

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease]; 
[statusItem setTitle:@"Ma Status Item"]; 
[statusItem setView:maView]; 
+0

Czy możesz sprawdzić, czy jego właściwość view.center zmienia się, gdy przesuwa się poza ekran? Możesz być w stanie dodać powiadomienie KVO do właściwości centrum, aby ustanowić rodzaj wywołania zwrotnego, ale nie wiem, czy to działałoby dla statusu status. – Suz

+0

Mam również timer, który rejestruje granice względem okna. Nie zmienia się ... Wygląda na to, że maView jest w swoim własnym oknie (NSWindow> NSNextStepFrame> maView). Spróbuję sprawdzić, czy jest to przeniesione poza ekran. – stigi

+0

Obramowania okien również są nadal widoczne na ekranie. Okno może zostać nałożone przez coś innego. Nie wiem, jak to sprawdzić. – stigi

Odpowiedz

1

To bardzo mądry z was, aby uświadomić sobie, że gdy element stanu jest ukryty, jego okno zostanie przeniesiony w tle.

Teraz zawiadomienie szukasz jest: NSWindowDidResignKeyNotification (lub NSWindowDidResignMainNotification w zależności od kontekstu aplikacji)

do jasnego wyjaśnienia na temat różnicy między kluczowego okna i okna głównego, zobacz this .

+0

Ta odpowiedź nie działa, -1, żadne powiadomienia tego rodzaju nie są wysyłane, gdy NSStatusItem jest ukryty – Vervious

+0

-1: I sekundę @Vervious - ta odpowiedź jest gorsza niż bezużyteczna, to zmusiło mnie do zmarnowania mojego czasu, próbując zrobić to praca. – ArtOfWarfare

Powiązane problemy