【问题标题】:Mac Catalyst: Is it possible to set a scene to Active?Mac Catalyst:是否可以将场景设置为活动?
【发布时间】:2021-05-09 12:14:09
【问题描述】:

我有一个具有多个独立场景的 Catalyst 应用程序,可以同时打开(前景)。 一些场景具有按钮或其他控件,它们将打开(激活、聚焦,如果当前不是前景)不同的场景。如果目标场景已经是前景(可见,但不是最前面),我希望目标场景处于活动状态。 这可能吗?

如果我在已经是前景的场景上调用 UIApplication.shared.requestSceneSessionActivation,它会打开目标窗口的第二个副本,而不是激活现有目标。 requestSceneSessionActivation 中可用的选项似乎不允许这样做。

【问题讨论】:

    标签: ios scene mac-catalyst


    【解决方案1】:

    你有对 UIWindowScene 的引用吗? requestSceneSessionActivation 就是你想要的,像这样传入场景:requestSceneSessionActivation(scene, userActivity: nil, options: nil)

    【讨论】:

    • 感谢@Adam 的建议,但是如果您阅读我的 Q,当我按照您的建议进行操作时,它会打开窗口的第二个副本,而不是简单地将焦点放在已经在屏幕。我现在正在使用 DYNAMIC 库,它应该可以让我访问 NSWindow 方法。
    • Dynamic 很棒,但我在我的应用程序中使用 requestSceneSessionActivation 并且它完全有效,无论场景是否处于活动状态。你确定你传入的场景对象是合法的吗?传递 nil 或非活动场景将导致一个新窗口,无论您的默认配置是什么。
    • 我尝试了您在干净的实验设置中再次使用 requestSceneSessionActivation 的建议,它确实有效。回到我的原始代码,它打开了场景的副本,不同之处在于,在原始代码中,我传递了一个非零的 userActivity。使用 nil 使其按需要工作。 Apple dox 在这一点上非常缺乏(我想像往常一样)
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2018-07-18
    • 2012-06-18
    • 2011-12-13
    • 1970-01-01
    • 2022-08-03
    相关资源
    最近更新 更多