2009-11-20 96 views
2

我正在開發一個可可應用程序。我的應用程序最初顯示了一個彈出窗口。現在我需要知道哪個事件被激發,當我們嘗試退出應用程序時,右鍵單擊並選擇「退出」在碼頭上,因爲我不能退出應用程序,因爲彈出式頁面..正在尋找解決方案應用程序退出事件

回答

6

當您在Dock菜單中選擇退出項目時,您的應用程序會發送一個quit Apple事件。如果你想攔截這個,你需要爲這個事件安裝一個自定義的Apple Event Handler。請注意,在表單被解除之前阻止應用程序終止是正常的,因此如果更改此行爲,您的應用程序將以與其他應用程序不同的方式工作。

下面是如何覆蓋quit蘋果事件的默認處理程序在你的應用程序委託一個簡單的例子:

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

太感謝你了...... – MobX 2009-11-20 07:10:09