Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 以编程方式更改到其他空间(MacOSX)_Objective C_Cocoa_Macos_Nswindow - Fatal编程技术网

Objective c 以编程方式更改到其他空间(MacOSX)

Objective c 以编程方式更改到其他空间(MacOSX),objective-c,cocoa,macos,nswindow,Objective C,Cocoa,Macos,Nswindow,我正在制作一个定制窗口(一个带有NSBorderlessWindowMask的NSWindow),到目前为止,我已经能够处理拖动、调整大小、cmd+单击,甚至可以在允许的情况下通过双击缩小窗口(请参见),使我的窗口尽可能类似于普通的NSWindow 但是,当我将窗口拖动到屏幕的一角时,用户希望将该窗口移动到下一个空间。(如果在“系统首选项”>“公开和共享空间”>“共享空间”>“启用共享空间”中启用了共享空间) 我想知道如何以编程方式切换到其他空间并将窗口移动到那里?不幸的是,没有公共API允许您

我正在制作一个定制窗口(一个带有NSBorderlessWindowMask的NSWindow),到目前为止,我已经能够处理拖动、调整大小、cmd+单击,甚至可以在允许的情况下通过双击缩小窗口(请参见),使我的窗口尽可能类似于普通的NSWindow

但是,当我将窗口拖动到屏幕的一角时,用户希望将该窗口移动到下一个空间。(如果在“系统首选项”>“公开和共享空间”>“共享空间”>“启用共享空间”中启用了共享空间)


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

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

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

请注意,使用此私有API将导致您的应用被苹果Mac应用商店拒绝。

我终于找到了解决方案。 我不能以编程方式更改到某个空间,但如果
[窗口设置可移动的Windows背景:是]
完成,我可以使我的窗口像其他非
NSBorderlessWindowMask
窗口一样运行。这就是这个问题的最终目的:)

解决方案写在这里(有一些细节),因为这个问题似乎比较老(或者可能是这个问题的重复?)