Как закрыть все видимые окна с помощью ярлыка «Command + W» - PullRequest
1 голос
/ 15 ноября 2011

Работая над простым приложением, которое работает со вторым окном настроек, я обнаружил поведение, которое не могу понять.

Когда я открываю окно настроек, нажимая Cmd + W, я закрываю только главное окно. Это стандартное поведение? Каков наилучший способ реализовать способ закрыть все окна?

1 Ответ

7 голосов
/ 15 ноября 2011

[[NSApp windows] makeObjectsPerformSelector:@selector(close)];

- это программный способ закрыть все окна, но на самом деле это не очень хороший дизайн, потому что пользователь не ожидает, что Command + W закроет все окна приложения. Вот для чего нужны Command + Option + W.

Если у вас есть приложение на основе документов, вы можете изменить дополнительное окно на экземпляр NSPanel, а затем проверить атрибут «Модальное документа». Таким образом, когда ваше окно документа закрывается, вспомогательное окно также закрывается.

Если это не приложение на основе документов, вы можете проверить атрибут окна «Скрыть при деактивации», который будет скрывать окно, когда приложение переходит в фоновый режим.

Кроме этого, если вы хотите "связать" два окна вместе, я думаю, вам нужно установить NSWindowDelegate и вручную поддерживать их состояние относительной видимости. Имеет ли это смысл?

...