2014-08-28 65 views
0

我有一個通用的NSPanel窗口,我在我的應用程序中用作偏好窗口。每當窗口關閉時,我都會選擇一個選擇器。該選擇器的目的是保存用戶選擇的首選項的狀態(沒有「保存」按鈕)。如何檢測NSPanel由於失去焦點而關閉?例如。用戶點擊NSPanel外部(窗口?)

我有一個NSButton(「關閉」),我很容易設置調用我的關閉選擇器。

我設定,讓我的選擇也被稱爲當用戶通過點擊做紅色的X在NSPanel的左上角:

NSButton *closeButton = [[self window] standardWindowButton:NSWindowCloseButton]; 
[closeButton setTarget:self]; 
[closeButton setAction:@selector(myCloseSelector:)]; 

這完美的作品。我的問題,但?如果用戶單擊NSPanel的以外的,則關閉窗口。例如。如果他們拿起鼠標並點擊瀏覽器窗口彈出的NSPanel下方。這也關閉了窗口。

如何捕獲我的NSPanel失去焦點並關閉?我需要確保當發生這種情況時,我也會得到我的選擇器。

謝謝!

回答

1

使NSWindowController成爲NSWindowDelegate的代表。

myWindowController.h

@interface myWindowController : NSWindowController <NSWindowDelegate> 

,然後設置myWindowController作爲委託我NSPanel。

現在我可以實現:

- (void) windowDidResignKey:(NSNotification *)notification { 
    NSLog(@"Houston...we lost a panel."); 
} 

,一切工作順順當當!