2009-12-25 9 views
7

Załóżmy, że użytkownik jest aktualnie w Chrome. Tak więc mam HUD, który jest wywoływany przez globalny skrót, użytkownik następnie wpisuje coś do niego i po kliknięciu Zamknij lub OK, HUD odchodzi (używając tylko [Orderu NSPanel:]), ale moja aplikacja jest nadal skupiona (np. Menu pasek mojej aplikacji jest nadal widoczny). Ale chcę, aby fokus powrócił do oryginalnej aplikacji, Chrome. Jak osiągnąć coś takiego? Najlepiej byłoby, gdybym nigdy nie "skupił się" na mojej aplikacji, a zatem wejście HUD mogło się zdarzyć, podczas gdy Chrome nadal byłby skoncentrowaną aplikacją. Things.app udaje się osiągnąć coś takiego. Quicksilver też to robi.Jak mogę skupić się na poprzedniej aplikacji w Cocoa?

Odpowiedz

0

Jeśli jest to jedyny interfejs użytkownika, który ma do zaoferowania aplikacja, można nadać mu klucz LSUIElement Info.plist, który uniemożliwia umieszczenie go w Docku lub jest aktywną aplikacją.

+0

Nie, mam inne okno, które pojawia się podczas korzystania z aplikacji. A to okno zachowuje się jak normalne okno aplikacji, więc nie mogę używać LSUIElement. – user220582

+0

Dlaczego nie? To na pewno wygląda na to, co chcesz. –

+0

Nie, chcę ikonę dokowania dla mojej aplikacji. – user220582

1

Możesz mieć beztwarzową aplikację pomocniczą, która zrobi to za ciebie lub zdobędzie PSN od przodu, zanim przejdziesz do przodu i powrócić do niego, kiedy chcesz odejść.

+0

przejdź z pierwszym, jeśli to możliwe, mniej podatnym na błąd. – cobbal

7

połączeń [NSApp hide:]

To ukryje swoją aplikację i aktywować wcześniej aktywnej aplikacji.

+0

To nie jest prawda, jeśli Twoja aplikacja ma pełne okno. – George

2

Aby nigdy nie skupiać się na swojej aplikacji, zadzwoń pod numer [panel setStyleMask:[panel styleMask] | NSNonactivatingPanelMask]; w swoim NSPanel lub zaznacz pole wyboru Nieaktywne w NSPanel w Konstruktorze interfejsu.

Powiązane problemy