2012-07-17 104 views

回答

1

applicationShouldHandleReopen:hasVisibleWindows:被髮送到應用程序的委託。委託消息通常由委託對象發送,在這種情況下,委託對象將是應用程序對象。

應用程序對象將該消息發送給其委託以處理重新打開的應用程序Apple事件。因此,要找到發件人,請爲該事件安裝自己的Apple事件處理程序,並安裝get the sender from the event。 (示例代碼在Pascal中,使用Apple Event Manager,但可以將它翻譯爲Objective-C和NSAppleEventDescriptor。)

也就是說,從UI角度來看,您所做的是非常可疑的。重新打開是爲了做同樣的事情,無論哪個應用程序重新打開你 - 並且不限於Finder或Dock。在通常情況下,用戶試圖在已經打開的應用程序中啓動應用程序。

當沒有窗戶打開時,只做「重新打開」行爲可能更有意義。可可內置的基於文檔的應用程序支持自動執行此操作;如果您未響應applicationShouldHandleReopen::或者您返回YES,應用程序會嘗試打開一個新文檔。您可以執行相同的檢查(它甚至會告訴您是否打開任何窗口),並在相同的條件下執行所需的行爲。

相關問題