Cocoa - 以编程方式将应用程序添加到所有空间
有没有办法以编程方式将应用程序添加到所有空间?我希望我的应用程序默认位于所有空间上。
is there a way to add an application to all spaces programmatically? I'd like my application to be on all spaces by default.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你需要的方法在 NSWindow 中。
对于 Lion 使用:
对于 pre-Lion 覆盖以下内容以返回 YES:
The methods you need are in NSWindow.
For Lion use:
For pre-Lion override the following to return YES:
这段代码对我有用(至少在我最近从事的一个小项目中的 10.6.8 上):
我将此代码放在主应用程序窗口的 WindowController(自定义子类)中。
This piece of code works for me (at least on 10.6.8 in a little project I recently worked on):
I put this code in a (custom subclass of a) WindowController for the main app window.
好的。仅以编程方式设置工作区应用程序绑定是行不通的。我尝试过:
很明显系统首选项正在做一些额外的事情来激活设置。有谁知道这可能是什么?谢谢!
更新:所以我能够通过使用 applescript api 而不是用户默认 api 来实现此功能。下面的文章讲述了如何使用 applescript 附加条目。然后干掉码头。
Applescript;在 N 号空间中打开应用
Ok. Just setting the workspaces-app-bindings programmatically didn't work. I tried:
So clearly system preferences is doing something extra to activate the setting. Does anyone know what this could be? Thanks!
Update: So I was able to get this working by using the applescript api instead of the user defaults api. The following post tells how to append an entry using applescript. Then just kill the dock.
Applescript; opening an app in Space number N
使用 OS X 附带的默认命令,如下所示:
通过发出上述命令,您可以将“com.apple.mail”标识的应用程序设置为出现在每个空间上。 65544 是一个神奇的值,表示“每个空格”。如果键值对(标识符+设置)存在,它将被覆盖。
请注意,您必须重新加载 Dock (
killall Dock
) 并以某种方式从应用程序内执行这些命令。在 Objective-C 中,您可以使用以下代码片段退出 Dock:在 AppleScript 中,使用以下代码:
Use the defaults-command that ships with OS X, like so:
By issuing the above command, you set the application identified by “com.apple.mail” to appear on every space. 65544 is a magic value saying “every space”. If the key-value pair (identifier + settings) exists it will be overwritten.
Note that you have to reload the Dock (
killall Dock
) and somehow execute these commands from within your application. From within objective-c you can use the following snippet to quit the Dock:From within AppleScript use the following:
您的应用程序委托应该如下所示......
Your app delegate should look like this...