Поймать ВСЕ события выхода с NSAppleEventManager - PullRequest
1 голос
/ 24 декабря 2011

Когда мое приложение Mac OS закрывается, я хочу, чтобы оно спросило пользователя: «Вы уверены, что хотите выйти [Да] [Нет]».

Я пробовал это:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    // Install a custom quit event handler
    NSAppleEventManager* appleEventManager = [NSAppleEventManager sharedAppleEventManager];
    [appleEventManager setEventHandler:self andSelector:@selector(handleQuitEvent:withReplyEvent:) forEventClass:kCoreEventClass andEventID:kAEQuitApplication];
}

// Handler for the quit apple event
- (void)handleQuitEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent {
    // Insert YES/NO-dialog here
    // if(blahahaha..
    //[NSApp terminate:self];
}

Но он улавливает только тот выход, который происходит, если щелкнуть правой кнопкой мыши мое приложение на панели и выбрать «Выйти». Если я нажимаю Cmd-Q или выбираю Выход из меню приложения, мой обработчик не вызывается ...

1 Ответ

2 голосов
/ 24 декабря 2011

Не все эти случаи связаны с Apple Events.Вместо этого обработайте метод делегата приложения -applicationShouldTerminate:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...