正常情況下,使用選項鍵關閉窗口會關閉應用程序中的所有窗口。在我的應用程序中,我希望它僅關閉與用戶正在關閉的窗口相關的窗口。我怎樣才能做到這一點?我可以爲我所有的窗口實現windowShouldClose,但我怎麼知道用戶點擊了哪個窗口?截取選項 - 關閉
回答
你可以看到,如果選擇的關鍵是在正在處理這樣的情況下按住:
([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask)!=0
如果這是在響應用戶單擊窗口的關閉按鈕,然後就可以找到這樣被點擊的窗口:[[NSApp currentEvent] window]
我想你還應該檢查一下,[NSApp currentEvent]
是一個鼠標事件等,但它似乎像這樣的組合測試應該得到你想要的信息。
如果,另一方面,這是按住Option鍵的「文件」菜單中選擇「關閉窗口」命令的用戶,可以從NSWindow
的默認實現覆蓋performClose:
方法你自己的,你會在
我不會檢查'currentEvent'是一個鼠標事件。菜單項可能已通過輔助功能工具(如VoiceOver)或自定義鍵盤快捷方式調用。如果菜單項所連接的操作方法已經被調用,那就足夠了。 –
啊,我認爲這個問題是關於窗口左上角的關閉按鈕控制。我猜想點擊關閉窗口菜單項的選項具有相同的效果。 –
對不起,我是可可的新手。如何攔截爲選項 - 關閉窗口調用的菜單項操作?這是由系統提供的,它不是我定義的菜單項。我需要在它走之前攔截它,並要求關閉所有其他窗口。 – user2802999
- 1. UIPopover關閉選項
- 2. 防止Windows關閉取消選項C#
- 3. 關閉Chrome擴展選項
- 4. 共享首選項關閉
- 5. featherlight.js配置選項關閉
- 6. 關閉該選項卡 - IE
- 7. UIPrintInteractionController,關閉雙面選項?
- 8. 關閉Angular-UI選項卡
- 9. 選項卡關閉事件
- 10. 退出選項卡關閉
- 11. 選項FollowSymLinks或SymLinksIfOwnerMatch關閉
- 12. 關於-ffunction截面-fdata截面和--gc截面選項
- 13. FXRuby攔截窗口關閉
- 14. 事件關閉在選擇JS選項
- 15. 關閉打開使用jQuery選項卡上的關閉按鈕
- 16. 無法關閉關閉的選項卡和激活標籤
- 17. 當側邊欄關閉時jQuery Accordion選項卡應該關閉
- 18. VS代碼HTML模式選項關閉自動關閉標籤
- 19. 關閉瀏覽器/選項卡上的會話關閉
- 20. 檢測選項卡關閉(關閉後)從Firefox擴展
- 21. mvim關閉最後一個選項卡不想關閉窗口
- 22. Selectbox「已關閉」選項樣式已關閉
- 23. 如何選擇谷歌關閉下拉項目(選擇選項)?
- 24. Visual Studio 2010選項卡關閉按鈕
- 25. 打開Chrome選項卡並關閉它
- 26. 如何禁用視圖關閉選項?
- 27. 如何關閉Angular-Strap選項卡
- 28. 關閉android中的選項卡
- 29. 使用Javascript關閉Firefox選項卡
- 30. 粘性盒子關閉選項
之前做
currentEvent
測試在NSWindow,NSWindowController和NSWindow的代表。子類化可能有所幫助。你也可能想在你的應用代理中添加一些東西。 – uchuugaka另外NSDocument和NSDocumentController,假設你的應用程序是基於文檔的。 –
你能更具體嗎? – user2802999