0

这里有一个问题:我需要知道用户何时双击 OS X 桌面,而不是上面的图标。

现在,我想到了以下解决方案,但我不确定它们是否可行:

  1. 使用桌面图标的位置(不知道如何获取它们)和桌面图标的大小,理论上我们可以检查用户双击桌面后,它是否在某个图标区域内。对比:可能并非完美无缺,因为某些图标可能是透明的或不占用整个图标大小。

  2. 也许有一个变量告诉我们是否点击了桌面上的图标?然后我们可以检查当用户上次双击桌面时该变量是否已激活。

我当然仍然对其他(更好的)解决方案持开放态度,但它们需要为 Mac App Store 提供沙盒功能。

4

1 回答 1

0

由于多种原因,这可能不适合 Mac App Store。

首先,您将如何拦截窗口外的点击?为此有几种不同的机制(例如,事件点击),但沙盒应用程序中不允许使用它们。这是故意的,并且有充分的理由——你不应该干扰其他应用程序或操作系统。

最重要的是,很难想象你尝试做的任何事情都不算是非标准的 UI/HIG 东西,这是拒绝的另一个原因。

但是,假设这些都不是问题,并且您可以拦截桌面上的点击,那么没有记录的方法可以获取桌面上的所有图标,因此您必须直接阅读 .DS_store 文件,这意味着依赖于私有实现信息,这是您不允许做的另一件事。

最后,您必须访问该 .DS_store 文件。除非您希望用户将(不可见)文件或其父目录拖到您的应用程序或在 NSOpenPanel 或其他东西中选择它,否则从沙箱内部获得此类访问的唯一方法是通过临时异常权利。除非您可以向审阅者证明为什么需要它作为操作系统中的错误或限制的解决方法,否则您不能使用它。那么,你的理由是什么?

于 2012-07-11T23:51:13.440 回答