申请退出事件

时间:2009-11-20 05:23:27

标签: objective-c cocoa macos appleevents

我正在使用cocoa开发一个应用程序。我的应用程序最初显示一个弹出工作表。现在我需要知道当我们尝试通过右键单击并在dock中的图标上选择“exit”退出应用程序时会触发哪个事件,因为我不能退出应用程序因为弹出工作表..寻找解决方案

1 个答案:

答案 0 :(得分:6)

在Dock菜单中选择退出项目后,您的应用程序将发送quit Apple事件。如果要拦截此事件,则需要为此事件安装自定义Apple事件处理程序。请注意,在工作表被解除之前,工作表通常会阻止应用程序终止,因此如果您更改此行为,您的应用程序将与其他应用程序的工作方式不同。

以下是如何在应用程序委托中覆盖quit Apple Events的默认处理程序的简单示例:

- (void)applicationDidFinishLaunching:(NSNotification*)notification
{
    //install the 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
{
    [self terminate:self];
}