2

我正在开发一个可可应用程序。我的应用程序最初显示一个弹出表。我需要知道当我们尝试通过右键单击并在停靠栏中的图标上选择“退出”来退出应用程序时触发了哪个事件,因为由于弹出表,我无法退出应用程序。我该如何解决这个问题?

4

1 回答 1

7

quit当在 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];
}
于 2009-11-20T06:41:48.700 回答