Закрытие приложения Mac (щелчок красным крестом сверху) и повторное открытие, нажав значок док-станции
Когда я закрываю приложение для Mac (нажав кнопку красного креста на верхней панели окна), значок приложения остается в доке внизу. Теперь это нормальное поведение. Когда пользователь снова нажимает на него, он не запускает приложение, если пользователь не завершает работу приложения и не возобновляет его снова.
Аналогичным примером в Mac OS X является "Монитор активности". Вы можете закрыть приложение, нажав на красную кнопку перекрестки вверху, но значок док-станции остается там. Пользователь может повторно открыть его, щелкнув значок док-станции.
Как я могу достичь этого в своем приложении?
Ответы
Ответ 1
Если вы все еще обеспокоены тем, как открыть окно, которое вы закрыли, используйте этот метод:
- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag {
[window makeKeyAndOrderFront:self];
return YES;
}
Вы можете использовать это для обработки кликов на значке приложений в доке.
Для получения дополнительной информации ознакомьтесь с ссылкой на протокол NSApplicationDelegate.
Вот документация:
http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSApplicationDelegate_Protocol/Reference/Reference.html
Надеюсь, это поможет!
Ответ 2
Внедрить метод
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return NO;
}
в делетете приложения
Ваше приложение будет зависать после закрытия окна, а затем, если вы реализуете
- (void)applicationDidBecomeActive:(NSNotification *)aNotification
{
//dock icon has just been clicked , or cmd-tabbed into
}
в делегате приложения
Вы можете делать что-то, когда нажимается значок, например, открывать новое или старое окно, если вам нужно
Смотрите http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSApplicationDelegate_Protocol/Reference/Reference.html для других соответствующих событий приложения
Ответ 3
Я думаю, что приведенные выше ответы не совсем корректны, для этого вы должны переопределить applicationShouldHandleReopen(_:hasVisibleWindows:)
https://developer.apple.com/reference/appkit/nsapplicationdelegate/1428638-applicationshouldhandlereopen