какао как заблокировать пункт меню «Выйти» в меню дока - PullRequest
1 голос
/ 08 декабря 2011

В моё меню всегда добавляется «Выход» и 2 других пункта меню автоматически, как я могу заблокировать / изменить их?

обновлено:

действительно НЕТ способа удалить / заблокировать / перенаправитьпункт меню «Выйти».наконец-то воспользовался рекомендацией Питера, как удар надежды, полезный для других

- (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) sender {if (needPassword) {[self checkPassword: self];вернуть NSTerminateCancel;} else {return NSTerminateNow;}}

- (void) checkPassword: (id) отправитель {if (passwordCorrect) {
! NeedPassword;[[NSApplication sharedApplication] terminate: self];}}

Ответы [ 2 ]

6 голосов
/ 08 декабря 2011

Попытка перехватить все возможные способы, которыми пользователь может сказать вашему приложению выйти, неизбежно завершится неудачей.(Помните ли вы событие «Выйти из Apple»?)

Будет проще и эффективнее реализовать метод applicationShouldTerminate: в делегате вашего приложения.Установите панель паролей и верните NSTerminateLater.Затем, когда пользователь вводит правильный пароль или отменяет действие, отправьте приложению a replyToApplicationShouldTerminate: сообщение .

Какие бы команды выхода (пункты меню и т. Д.) Вы уже выполнилиПоложи их обратно.Пусть пользователь вызывает нормальную команду Quit обычным способом;это вызовет вышеупомянутую процедуру «следует прекратить», чтобы определить, действительно ли произойдет выход.

1 голос
/ 08 декабря 2011

1) Откройте MainMenu.xib 2) Создайте свое собственное меню док-станции 3) Щелкните правой кнопкой мыши на Владельце файла (экземпляр NSApplication) 4) Соедините свойство "dockMenu" с вашим пользовательским меню

Если вы хотитеделать это из-за учебных целей это нормально.Однако, когда вы хотите продать это приложение, вы должны пересмотреть это.Пользователи ожидают, что ваше приложение будет иметь кнопку выхода в меню Dock.

...