Objective c 应用程序退出事件

Objective c 应用程序退出事件,objective-c,cocoa,macos,appleevents,Objective C,Cocoa,Macos,Appleevents,我正在开发一个可可应用程序。我的应用程序最初显示一个弹出式表单。我需要通过右键单击并选择dock中图标上的“exit”(退出)来知道当我们试图退出应用程序时触发了哪个事件,因为弹出页面导致我无法退出应用程序。如何解决此问题?当在Dock菜单中选择退出项目时,您的应用程序将收到一个quitApple事件。如果要拦截此事件,需要为此事件安装自定义Apple事件处理程序。请注意,在工作表关闭之前,工作表通常会阻止应用程序终止,因此,如果您更改此行为,您的应用程序将与其他应用程序的工作方式不同 下面是一

我正在开发一个可可应用程序。我的应用程序最初显示一个弹出式表单。我需要通过右键单击并选择dock中图标上的“exit”(退出)来知道当我们试图退出应用程序时触发了哪个事件,因为弹出页面导致我无法退出应用程序。如何解决此问题?

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

下面是一个简单的示例,说明如何覆盖应用程序委托中的
quit
Apple事件的默认处理程序:

- (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];
}