0

我希望将停靠 clic 与单击 finder 中的应用程序图标区分开来。

我可以知道什么叫 applicationShouldHandleReopen或有其他方法吗?

4

1 回答 1

1

applicationShouldHandleReopen:hasVisibleWindows:发送给应用程序的委托人。委托消息通常由委托对象发送,在这种情况下,委托对象是应用程序对象。

应用程序对象将该消息发送给它的委托,以便处理重新打开应用程序 Apple 事件。因此,要找到发送者,请为该事件安装您自己的 Apple 事件处理程序并从事件中获取发送者。(示例代码在 Pascal 中并使用 Apple 事件管理器,但您可以将其转换为 Objective-C 和 NSAppleEventDescriptor。)

也就是说,从 UI 的角度来看,您正在做的事情非常可疑。无论哪个应用程序重新打开您,重新打开都意味着做同样的事情 - 它不限于 Finder 或 Dock。在常见的情况下,实际上是用户在应用程序已经打开时尝试启动它。

仅在没有打开窗口时才执行“重新打开”行为可能更有意义。Cocoa 内置的基于文档的应用程序支持自动执行此操作;如果您不回复applicationShouldHandleReopen::或返回YES,应用程序会尝试打开一个新文档。您可以执行相同的检查(它甚至会告诉您是否打开了任何窗口)并在相同的条件下执行您想要的行为。

于 2012-07-18T04:01:27.307 回答