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