ich eine benutzerdefinierte NSWindow Klasse, die die folgenden Methoden hat:NSWindow erhält keine Benachrichtigung, wenn es den Fokus verliert
- (void)setupWindowForEvents{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignMainNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:self];
}
-(void)windowDidResignKey:(NSNotification *)note {
NSLog(@"notification");
[self close];
}
Ich nenne [_window setupWindowForEvents];
aber die windowDidResignKey
nie aufgerufen wird.
Dies ist, wie ich meine NSWindow nennen: Wenn der Statusleiste Element geklickt wird I makeKeyAndOrderFront
und das Fenster rechts unten in der Statusleiste Element angezeigt, wie folgt aus:
Irgendwelche Ideen, warum die ich erhalte keine Benachrichtigung wenn das Fenster den Fokus verliert? Ich habe beide NSWindowDidResignMainNotification
und NSWindowDidResignKeyNotification
verwendet, um zu sehen, ob irgendwelche von diesen funktionierten, aber keine funktioniert.
danke Ihnen so sehr, vollständig über das vergessen. Übrigens, kannst du mir bitte den Unterschied zwischen den Benachrichtigungen 'NSWindowDidResignMainNotification' und' NSWindowDidResignTypeNotification' erklären? –
Gute Frage. Schlüsselfenster sind diejenigen, die derzeit den ersten Responder-Status haben und auf Benutzereingaben reagieren. Hauptfenster sind genau wie Schlüsseldisplays, außer dass sie nicht notwendigerweise den Erstansprecherstatus haben müssen. Beide Zustände erscheinen konzentriert. Dies könnte für Sie nützlich sein: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/WinPanel/Concepts/ChangingMainKeyWindow.html –