Когда вы нажимаете Command + W , это то же самое, что и выбор File -> Close
в строке меню. Close
отправляет сообщение performClose:
первому ответчику. Это, в свою очередь, проверит, реализует ли получатель или делегат получателя windowShouldClose:
, и окно закроется, если вернет YES
(в противном случае он вызовет метод close
).
Так что на самом деле, это зависит от того, какой тип диалога у вас здесь. Если он немодальный (по сути, если вы можете получить доступ к строке меню во время его работы) и является экземпляром или подклассом NSWindow
, то все, что вам нужно сделать, это переопределить метод windowShouldClose:
в делегате вашего диалогового окна (или класс диалога, если вы вложили в подкласс NSWindow
или что-то еще) и верните его YES
.
Однако , если это модальное диалоговое окно (вы не можете получить доступ к строке меню, переключать окна и т. Д. Во время работы диалога), то вы не можете сделать это таким образом. Вы могли бы добавить невидимую кнопку, но, честно говоря, модальное диалоговое окно не должно закрываться нажатием Command-W
, поскольку это, безусловно, нарушает некоторые рекомендации Apple по интерфейсу. (Тем более что, как отметила Анде, стандартная практика - Esc закрывать / отменять диалог.)