Как сделать приложение для какао закрыто, когда основное окно закрыто? Без этого вы должны щелкнуть значок приложения и выйти в меню.Сделать приложение для какао закрыто, когда основное окно закрыто?
ответ
Вы можете реализовать applicationShouldTerminateAfterLastWindowClosed:
, чтобы вернуть ДА в делегат вашего приложения. Но я бы дважды подумал, прежде чем делать это, так как это действительно необычно на Mac за пределами небольших «полезных» приложений, таких как Калькулятор, и большинство пользователей Mac не оценят, как ваше приложение ведет себя так странно.
На самом деле Apple однажды отклонила мое приложение и предложила реализовать его. Они сказали, что мне нужен либо ясный способ снова открыть главное окно, либо реализовать «applicationShouldTerminateAfterLastWindowClosed» –
@nute: Ну, да, должен быть простой способ открыть окно. Приложение, в котором вы нажимаете на значок, и ничего не происходит, не является хорошим UX. Это далеко не говорит о том, что приложения в целом должны выйти, когда закрывается последнее окно. – Chuck
Вы должны иметь IBOutlet в своем главном окне. Например: IBOutlet NSWindow * mainWindow;
- (void)awakeFromWindow {
[mainWindow setDelegate: self];
}
- (void)windowWillClose:(NSNotification *)notification {
[NSApp terminate:self];
}
Если это не работает, вы должны добавить наблюдателя к вашему NSNotificationCenter для уведомления NSWindowWillCloseNotification. Не забудьте проверить, закрывается ли правое окно.
Добавьте этот фрагмент кода для делегата вашего приложения:
-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app {
return YES;
}
Как речь идет в основном о программировании какао и не о конкретных языка (Objective-C), здесь Swift версия Чак и Стива ответ:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
return true
}
// Your other application delegate methods ...
}
для Swift 3 изменить определение методом
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
Я добавил этот ответ в духе мета-вопроса [Являются ли новые ответы Быстро ответа на старые вопросы Objective-C полезными?] (Http://meta.stackoverflow.com/questions/303338/are-new-swift-answers- on-old-objective-c-questions-useful), и потому, что я закрыл новый вопрос, задав явно код Swift как дубликат этого. –
Swift 3 требует подчеркивания и пробела перед текстом отправителя. – dylan
@dylan: Да, спасибо! –
- 1. Какао-приложение появляется при сбое, когда основное окно закрыто.
- 2. Приложение не выходит, когда основное окно закрыто.
- 3. QWidget не закрывается, когда основное окно закрыто.
- 4. Закройте основное приложение, если приложение «helper» закрыто
- 5. Push Notification Когда приложение закрыто/закрыто, включая
- 6. сигнализации, когда приложение закрыто
- 7. обнаружить, когда приложение закрыто
- 8. startMonitoringForRegion, когда приложение закрыто
- 9. радиоприемник, когда приложение закрыто
- 10. Остановить службу, когда приложение закрыто
- 11. UILocalNotification когда приложение закрыто
- 12. Сообщение, когда окно WebView закрыто?
- 13. NSURLCache опорожняется, когда приложение закрыто
- 14. Предупреждение JavaScript, когда окно закрыто.
- 15. System.Net.WebException: Основное соединение было закрыто: соединение было неожиданно закрыто.
- 16. WebClient.UploadData «Основное соединение было закрыто»
- 17. httpWebRequest (Основное соединение было закрыто: соединение было неожиданно закрыто.)
- 18. Обновить родительское окно, когда всплывающее окно закрыто.
- 19. Сообщение, когда приложение Android закрыто
- 20. Swift2 push, когда приложение закрыто
- 21. отменить AlarmManager, когда приложение закрыто
- 22. Имитировать ошибку «Основное соединение было закрыто: соединение было неожиданно закрыто».
- 23. Таймаут: Основное соединение было закрыто: соединение было неожиданно закрыто
- 24. Сервис прекращается, когда приложение закрыто.
- 25. установить приложение java для закрытия, когда окно браузера JavaFX закрыто?
- 26. Обновление местоположения, когда приложение закрыто
- 27. Pushing уведомления, когда приложение закрыто
- 28. Расположение Мониторинг когда приложение закрыто
- 29. «Основное соединение было закрыто: соединение было неожиданно закрыто». wcf service
- 30. Уведомления Firebase, когда приложение закрыто
Хотя это правильный вопрос, передумайте. Если ваше приложение должно всегда присутствовать в главном окне, отключите возможность его закрытия. –
Справедливо, я сделаю это. Спасибо! –
Я не согласен. В большинстве приложений с одним окном, включая Калькулятор и (в настоящее время) Системные настройки, вы можете закрыть окно, и это завершает работу приложения. И я лично использовал приложения, которые пошли другим путем, и были разочарованы, когда я попытался закрыть главное окно и получил звуковой сигнал вместо того, чтобы закрыть/закрыть я хотел. –