Закрытие приложения Mac (нажатие красного креста сверху) и повторное открытие, нажав значок док-станции - PullRequest
10 голосов
/ 31 марта 2011

Когда я закрываю свое приложение Mac (нажимая красную кнопку с крестиком на верхней панели окна), значок приложения остается в доке внизу. Теперь это нормальное поведение. Когда пользователь снова щелкает по нему, приложение не запускается, если пользователь полностью не закрыл приложение и не перезапустил его снова.

Аналогичный пример в Mac OS X - «Монитор активности». Вы можете закрыть приложение, нажав на кнопку красного креста вверху, но значок док-станции остается там. Пользователь может повторно открыть его, щелкнув значок док-станции.

Как мне добиться этого в моем собственном приложении?

Ответы [ 3 ]

21 голосов
/ 31 марта 2011

Если вы все еще беспокоитесь о том, как открыть окно, которое вы закрыли, используйте этот метод:

- (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

Надеюсь, это поможет!

3 голосов
/ 31 марта 2011

Реализация метода

- (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 для других соответствующих событий приложения

0 голосов
/ 02 мая 2017

Я думаю, что приведенные выше ответы не являются полностью правильными, для достижения этого вам необходимо переопределить applicationShouldHandleReopen(_:hasVisibleWindows:) https://developer.apple.com/reference/appkit/nsapplicationdelegate/1428638-applicationshouldhandlereopen

...