nac*_*o4d 10 macos cocoa objective-c nswindow
我正在制作一个自定义窗口(一个带有NSBorderlessWindowMask的NSWindow)到目前为止,我已经能够处理拖动,调整大小,cmd +点击甚至小型化,如果允许的话,双击(见这里)所以我的窗口尽可能地与正常相似NSWindow.
但是,当我将窗口拖到屏幕的一角时,用户希望将该窗口移动到下一个空间.(如果在"SystemPreferences">"Expose and Spaces">"Spaces">"Enable Spaces"中启用了Spaces,请执行以下操作:
我想知道如何以编程方式更改到其他空间并将窗口移动到那里?
不幸的是,没有公共API允许您执行此操作,但是如果您愿意使用Private API,则可以这样做。看看CGSPrivate.h,您会看到可以像这样拨打电话:
CGSConnection connection = _CGSDefaultConnection();
CGSMoveWorkspaceWindowList(connection, &windowNumber, 1, newSpaceNumber);
Run Code Online (Sandbox Code Playgroud)
请注意,使用此私有API会导致您的应用被Apple的Mac App Store拒绝。
最后我找到了解决方案。我无法以编程方式更改为某个空间,但我可以使我的窗口表现得像其他非NSBorderlessWindowMask如果[window setMovableByWindowBackground:YES]完成的窗口。这就是这个问题的最终目的:)
解决方案写在这里(有一些细节),因为这个问题似乎更旧(或者可能是这个问题的重复?)
有没有办法让自定义 NSWindow 与 Spaces 一起使用
| 归档时间: |
|
| 查看次数: |
2996 次 |
| 最近记录: |