Tôi có một lớp NSWindow tùy chỉnh mà có các phương pháp sau:NSWindow không nhận được bất kỳ thông báo khi nó mất tập trung
- (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];
}
tôi gọi [_window setupWindowForEvents];
nhưng windowDidResignKey
không bao giờ được gọi.
Đây là cách tôi gọi NSWindow của tôi: khi mục thanh trạng thái được nhấp Tôi makeKeyAndOrderFront
và Window sẽ được hiển thị ngay bên dưới mục trên thanh trạng thái, như thế này:
Bất cứ ý tưởng tại sao tôi không nhận được bất kỳ thông báo khi cửa sổ mất tiêu điểm? Tôi đã sử dụng cả hai NSWindowDidResignMainNotification
và NSWindowDidResignKeyNotification
để xem có bất kỳ cách nào trong số này hoạt động hay không, nhưng không có cách nào hoạt động.
cảm ơn bạn rất nhiều, hoàn toàn quên về điều đó. btw, u có thể vui lòng giải thích cho tôi sự khác biệt giữa các thông báo 'NSWindowDidResignMainNotification' và' NSWindowDidResignKeyNotification'? –
Câu hỏi hay. Các cửa sổ chính là những cửa sổ hiện đang có trạng thái trả lời đầu tiên và phản hồi đầu vào của người dùng. Các cửa sổ chính giống như các cửa sổ chính, trừ khi chúng không nhất thiết phải có trạng thái trả lời đầu tiên. Cả hai tiểu bang đều xuất hiện tập trung. Điều này có thể được sử dụng cho bạn: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/WinPanel/Concepts/ChangingMainKeyWindow.html –