Objective c 以编程方式更改到其他空间(MacOSX)
我正在制作一个定制窗口(一个带有NSBorderlessWindowMask的NSWindow),到目前为止,我已经能够处理拖动、调整大小、cmd+单击,甚至可以在允许的情况下通过双击缩小窗口(请参见),使我的窗口尽可能类似于普通的NSWindow 但是,当我将窗口拖动到屏幕的一角时,用户希望将该窗口移动到下一个空间。(如果在“系统首选项”>“公开和共享空间”>“共享空间”>“启用共享空间”中启用了共享空间)Objective c 以编程方式更改到其他空间(MacOSX),objective-c,cocoa,macos,nswindow,Objective C,Cocoa,Macos,Nswindow,我正在制作一个定制窗口(一个带有NSBorderlessWindowMask的NSWindow),到目前为止,我已经能够处理拖动、调整大小、cmd+单击,甚至可以在允许的情况下通过双击缩小窗口(请参见),使我的窗口尽可能类似于普通的NSWindow 但是,当我将窗口拖动到屏幕的一角时,用户希望将该窗口移动到下一个空间。(如果在“系统首选项”>“公开和共享空间”>“共享空间”>“启用共享空间”中启用了共享空间) 我想知道如何以编程方式切换到其他空间并将窗口移动到那里?不幸的是,没有公共API允许您
我想知道如何以编程方式切换到其他空间并将窗口移动到那里?不幸的是,没有公共API允许您这样做,但如果您愿意使用私有API,这是可能的。看一看,你会发现你可以打这样的电话:
CGSConnection connection = _CGSDefaultConnection();
CGSMoveWorkspaceWindowList(connection, &windowNumber, 1, newSpaceNumber);
请注意,使用此私有API将导致您的应用被苹果Mac应用商店拒绝。我终于找到了解决方案。 我不能以编程方式更改到某个空间,但如果
[窗口设置可移动的Windows背景:是]
完成,我可以使我的窗口像其他非NSBorderlessWindowMask
窗口一样运行。这就是这个问题的最终目的:)
解决方案写在这里(有一些细节),因为这个问题似乎比较老(或者可能是这个问题的重复?)