【问题标题】:Change to other space (MacOSX) programmatically以编程方式更改为其他空间 (MacOSX)
【发布时间】:2011-06-06 10:43:29
【问题描述】:

我正在制作一个自定义窗口(带有 NSBorderlessWindowMask 的 NSWindow) 到目前为止,我已经能够处理拖动、调整大小、cmd+单击甚至在允许的情况下通过双击进行小型化(请参阅here),所以我的窗口与尽可能到一个正常的 NSWindow。

但是,当我将窗口拖到屏幕的一角时,用户会希望将该窗口移动到下一个空间。 (如果您在“SystemPreferences”>“Expose and Spaces”>“Spaces”>“Enable Spaces”中启用了 Spaces)

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

【问题讨论】:

    标签: objective-c cocoa macos nswindow


    【解决方案1】:

    不幸的是,没有公共 API 允许您执行此操作,但如果您愿意使用私有 API,则可以。看看CGSPrivate.h,你会发现你可以像这样拨打电话:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 2020-04-03
        • 1970-01-01
        • 2019-04-10
        相关资源
        最近更新 更多