Ios 基于mac catalyst场景的应用程序中的模式对话框打破响应者链

Ios 基于mac catalyst场景的应用程序中的模式对话框打破响应者链,ios,menuitem,mac-catalyst,uiscene,uimenu,Ios,Menuitem,Mac Catalyst,Uiscene,Uimenu,我有一个基于多窗口场景(不是SwiftUI)的iPad应用程序,我正在使用MacCatalyst为Mac进行调整。我对主菜单的行为有问题。菜单是使用func buildMenu()在AppDelegate.swift中构建的。例如,我有一个开放的图像。。。在我的主视图控制器中使用选择器的菜单项。以下是buildMenu()中的代码: 第一次打开视图控制器时,它处于启用状态并正常工作。见: 然后我打开任何模式对话框,例如,“关于”对话框,关闭后,打开的图像。。。菜单项处于停用状态,就好像选择器不

我有一个基于多窗口场景(不是SwiftUI)的iPad应用程序,我正在使用MacCatalyst为Mac进行调整。我对主菜单的行为有问题。菜单是使用func buildMenu()在AppDelegate.swift中构建的。例如,我有一个开放的图像。。。在我的主视图控制器中使用选择器的菜单项。以下是buildMenu()中的代码:

第一次打开视图控制器时,它处于启用状态并正常工作。见:

然后我打开任何模式对话框,例如,“关于”对话框,关闭后,打开的图像。。。菜单项处于停用状态,就好像选择器不再位于响应器链中一样,尽管视图控制器上的一切都正常工作

我不明白这里发生了什么。这种功能在非多窗口catalyst应用程序上运行良好


更新:这个问题与应用程序基于场景无关。它是一个基于UIDocument的应用程序,UIDocumentBrowserViewController以模式显示主视图控制器。然后,主视图控制器是第一个响应者,一切正常,但只要在其上打开另一个模式窗口(如系统生成的“关于”对话框),原始文档浏览器视图控制器将成为第一个响应者,并且主视图控制器不再位于窗口层次结构中(即使文档浏览器视图控制器不可见,并且主视图控制器仍显示并正常工作)。如果任何人都有处理此问题的经验,我将感谢他们的建议。

通过进一步的实验,并考虑到这是一个基于UIDocument的应用程序,似乎文档浏览器视图控制器在对话框关闭后成为第一响应者。因此我想我可以解决这个问题并从文档中转发操作br打开主视图控制器

 let openFileCommand = UIKeyCommand(
            title: "Open Image...",
            action: #selector(DiagramViewController.openImageFile(_:)),
            input: "o",
            modifierFlags: [.command]
        )
        let openFileMenu = UIMenu(
            title: "",
            image: nil,
            identifier: UIMenu.Identifier("openImage"),
            options: .displayInline,
            children: [openFileCommand]
        )
        builder.insertSibling(openFileMenu, afterMenu: .newScene)