Док-станция Mac OS X: как программно развернуть мое приложение с помощью главного значка приложения, а не свернутого значка?

Согласно документации Mac Dock: «Dock хранит приложения слева, а стеки и свернутые. окна остаются справа. Если вы присмотритесь, вы увидите вертикальную разделительную линию, разделяющую их ".

Это означает, что после того, как приложение свернуто, у вас появится НОВЫЙ значок док-станции с правой стороны, и вам нужно щелкнуть по нему, чтобы развернуть приложение.

Однако такие приложения, как Chrome и Finder, ведут себя по-разному: если вы нажмете ЛЕВЫЙ значок (значок «основного» приложения), он также развернет приложение!

Я создал свое собственное приложение для Mac, и я хотел бы, чтобы оно вело себя как Chrome: это означает, что после сворачивания, если вы нажмете на левый или правый значок док-станции, оно развернется. Как я могу сделать это программно?

[Прилагаю скриншот док-станции. Вы можете увидеть как «основной» значок Chrome, так и «свернутый» значок рядом с ним. Оба значка откликнутся и развернут окно. attachingОднако другие приложения (например, TextEdit, а также то, которое я запрограммировал в XCode): только свернутый значок увеличивает их . «Главный» значок ничего не делает.]

Как я могу программно сделать так, чтобы оба значка разворачивали мое приложение?

Бесконечно благодарен!

Нили


person Nili    schedule 22.09.2013    source источник
comment
Вы используете «максимизировать» вместо «минимизировать»? Потому что на самом деле это не противоположности. Развертывание изменяет размер окна. (Также будьте осторожны, чтобы не объединять приложения с окнами: вы можете минимизировать и / или максимизировать окна; вы не можете делать то же самое с приложением.)   -  person Peter Hosey    schedule 23.09.2013


Ответы (2)


Необходимо реализовать applicationShouldHandleReopen, чтобы открывать свернутые окна из «основного» значка

- (BOOL)applicationShouldHandleReopen:(NSApplication *) __unused theApplication hasVisibleWindows:(BOOL)flag
{
    if (!flag){
        [[self window] makeKeyAndOrderFront:self];
    }
    return YES;
}
person Nili    schedule 22.09.2013

Щелчок по значку Dock вызывает:

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag

Снова откройте свои окна в этом обработчике сообщений.

Он отправляется делегату приложения и является частью протокола NSApplicationDelegate.

person Nickolay Olshevsky    schedule 22.09.2013
comment
Ни один из этих методов не вызывается при нажатии на главный значок :-( - person Nili; 22.09.2013
comment
Извините, вставил неверные методы. Ответ ниже должен быть более полезным. - person Nickolay Olshevsky; 22.09.2013