以编程方式更改为其他空间(MacOSX)

时间:2011-06-06 10:43:29

标签: objective-c cocoa macos nswindow

我正在制作一个自定义窗口(带有NSBorderlessWindowMask的NSWindow)到目前为止,我已经能够处理拖动,调整大小,cmd +点击甚至小型化,如果允许的话,双击(参见here),这样我的窗口就像尽可能多的正常NSWindow。

然而,当我将窗口拖到屏幕的一角时,用户希望将该窗口移动到下一个空格。 (如果您在“SystemPreferences”>“曝光和空格”>“空格”>“启用空格”中启用了空格,则

我想知道如何以编程方式更改到其他空间并将窗口移到那里?

2 个答案:

答案 0 :(得分:4)

不幸的是,没有公共API允许您这样做,但如果您愿意使用私有API,那么它是可能的。看一下CGSPrivate.h,你会发现你可以这样打电话:

CGSConnection connection = _CGSDefaultConnection();
CGSMoveWorkspaceWindowList(connection, &windowNumber, 1, newSpaceNumber);   

请注意,使用此私有API会导致您的应用从Apple的Mac App Store中被拒绝。

答案 1 :(得分:1)

最后我找到了解决方案。 我无法以编程方式更改为某个空格,但如果NSBorderlessWindowMask完成,我可以使我的窗口像其他非[window setMovableByWindowBackground:YES]一样。这是这个问题的最终目的:)

这里写的是解决方案(有一些细节),因为这个问题看起来比较老(或者可能是这个问题的副本?

Is there a way to make a custom NSWindow work with Spaces