2010-06-24 6 views
7

Ich mache eine Anwendung, die der Benutzer mit einem Fenster interagieren muss und wenn sie dieses Fenster so konfiguriert haben, wie sie es wollen, wechseln sie zu einer anderen Anwendung als meine Anwendung beginne, andere Sachen zu tun, die ich in einer Methode definiert haben würdeErkennen, ob das Fenster ein Schlüsselfenster in Kakao ist

sagen für ein Beispielprogramm, wenn das Hauptfenster Fokus hat es eine Beschriftung, die sagt "ich bin fokussiert" und wenn die Person auf den Desktop oder ein anderes Fenster klickt/Anwendung dann wird das Etikett lesen "Ich bin nicht fokussiert".

Dank

Antwort

9

Das ist nicht dasselbe wie Schlüsselfenster. Schlüsselfenster bedeutet, dass Sie Eingabeereignisse für Ihre Anwendung erhalten. Was Sie wissen möchten, ist, ob Ihre Anwendung im Vordergrund steht. Was Sie suchen, ist die NSApplication Benachrichtigungen NSApplicationDidBecomeActiveNotification und NSApplicationDidResignActiveNotification. Beobachten Sie diese, um festzustellen, ob Ihre Anwendung im Vordergrund steht oder nicht. Ihre Anwendungsdelegaten applicationDidBecomeActive: und applicationDidResignActive: werden automatisch bei diesen Ereignissen aufgerufen.

+0

+1 für eine bessere Antwort als meine. – robinjam

+0

Danke, es war genau das, wofür ich gearbeitet habe! Jetzt, wenn ich nur den Code innerhalb der Methode erhalten könnte, um richtig zu arbeiten – Zanok

+2

Zanok: Es ist zu erklären, dass Fenster von Anwendungen in Mac OS X getrennt sind. Eine Anwendung kann und hat mehrere Fenster. Sie müssen entscheiden, ob Sie sich für das aktive Fenster interessieren (im Gegensatz zu den anderen Fenstern in Ihrer Anwendung, einschließlich des Infobereichs, des Bedienfelds "Schrift", des Bedienfelds "Farbe" und möglicherweise der Einstellungen) oder der aktiven Anwendung (im Gegensatz zu einer anderen Anwendung). –

11

[NSWindow isKeyWindow] sein könnte, was Sie suchen.

Gibt an, ob das Fenster das Schlüsselfenster für die Anwendung ist.

- (BOOL) isKeyWindow

Rückgabewert JA, wenn das Fenster der Schlüssel Fenster für die Anwendung ist; sonst, NEIN.

Wenn Sie ermitteln möchten, wenn Sie Ihre Fenster-Taste wird, oder wenn es die NSWindowDidBecomeKeyNotification und NSWindowDidResignKeyNotification Meldungen sind Schlüssel Besuche stoppt.