2012-06-28 43 views
4

我有一個對話窗口,可以通過自定義的取消按鈕或使用系統紅色窗口按鈕取消。當對話框被取消時,我需要執行一些簡單的邏輯。如何檢測用戶是否按下了紅色按鈕?如何使用紅色窗口按鈕檢測到我的窗口正在關閉?

我知道我可以使用-windowWillClose:委託回調來檢測正在關閉的窗口。但是,當我在對話成功後以編程方式關閉窗口時,也會調用此回調。我也知道我可以簡單地設置一個BOOL標誌,但有沒有更好的解決方案?如果我能檢測到紅色按鈕激活,那將是最好的。

+0

同時具有取消按鈕和關閉按鈕是不正確的用戶界面(至少,不在Mac上)。在對話框中,按鈕存在,所以它們就足夠了。在這種情況下,窗口框架中應該沒有啓用紅色按鈕;在可可中,這是通過設置窗口的遮罩來實現的。 –

回答

13

定義關閉按鈕:

NSButton *closeButton = [self standardWindowButton:NSWindowCloseButton]; 

連接關閉按鈕定製選擇器:

[closeButton setTarget:self.delegate]; 
[closeButton setAction:@selector(closeThisWindow)]; 

運行特定代碼和手動關閉窗口。

-(void)closeThisWindow { 

    // 
    // The NSWindowCloseButton has been clicked. 
    // Code to be run before the window closes. 
    // 

    [self close]; 
} 
+0

謝謝,這正是我想要的。 – zoul

相關問題