2013-09-21 54 views
2

正常情況下,使用選項鍵關閉窗口會關閉應用程序中的所有窗口。在我的應用程序中,我希望它僅關閉與用戶正在關閉的窗口相關的窗口。我怎樣才能做到這一點?我可以爲我所有的窗口實現windowShouldClose,但我怎麼知道用戶點擊了哪個窗口?截取選項 - 關閉

+0

之前做currentEvent測試在NSWindow,NSWindowController和NSWindow的代表。子類化可能有所幫助。你也可能想在你的應用代理中添加一些東西。 – uchuugaka

+0

另外NSDocument和NSDocumentController,假設你的應用程序是基於文檔的。 –

+0

你能更具體嗎? – user2802999

回答

1

你可以看到,如果選擇的關鍵是在正在處理這樣的情況下按住:

([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask)!=0

如果這是在響應用戶單擊窗口的關閉按鈕,然後就可以找到這樣被點擊的窗口:[[NSApp currentEvent] window]

我想你還應該檢查一下,[NSApp currentEvent]是一個鼠標事件等,但它似乎像這樣的組合測試應該得到你想要的信息。


如果,另一方面,這是按住Option鍵的「文件」菜單中選擇「關閉窗口」命令的用戶,可以從NSWindow的默認實現覆蓋performClose:方法你自己的,你會在

+0

我不會檢查'currentEvent'是一個鼠標事件。菜單項可能已通過輔助功能工具(如VoiceOver)或自定義鍵盤快捷方式調用。如果菜單項所連接的操作方法已經被調用,那就足夠了。 –

+0

啊,我認爲這個問題是關於窗口左上角的關閉按鈕控制。我猜想點擊關閉窗口菜單項的選項具有相同的效果。 –

+0

對不起,我是可可的新手。如何攔截爲選項 - 關閉窗口調用的菜單項操作?這是由系統提供的,它不是我定義的菜單項。我需要在它走之前攔截它,並要求關閉所有其他窗口。 – user2802999