【问题标题】:Using undo manager with mac catalyst使用带有 mac 催化剂的撤消管理器
【发布时间】:2020-02-13 14:28:37
【问题描述】:

我正在向 iOS 应用程序添加一个 mac 构建目标。我有基本的工作,并希望实现撤消/重做功能。

在传统的 AppKit 应用程序中,您可以免费获得此功能。当您创建一个新的应用程序时,预填充的主菜单在其下具有编辑项和撤消和重做。视图控制器有一个undoManager,你只需要registerUndo就可以了(最好是setActionName),一切正常。热键、菜单项标题更改和状态更改(在堆栈顶部禁用重做等)都是开箱即用的。

向 iOS 项目添加催化剂构建目标还会创建一个默认菜单,其中包含顶级编辑菜单和撤消/重做菜单项。这些似乎没有采用内置功能。我真的需要手动重新创建所有使用 AppKit 的免费内容吗?还是我遗漏了什么?

【问题讨论】:

    标签: ios swift macos uikit mac-catalyst


    【解决方案1】:

    您是否正在调用becomeFirstResponder(),因为您正在注册撤消事件?这让我绊倒了一段时间。

    我无法让操作名称显示在 Catalyst 编辑菜单中,但我确实看到撤消/重做堆栈可以从 UIKit 代码正常工作,而无需进入 AppKit。

    【讨论】:

      【解决方案2】:

      NSWindow.undoManager 上注册撤消对我有用。但我必须使用隐藏/私有 API 来使用 Dynamic 库访问 NSWindow 实例:

      let nsWindow = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(view.window)
      let undoManager: UndoManager? = nsWindow.undoManager
      

      【讨论】:

        猜你喜欢
        • 2020-12-14
        • 2023-04-02
        • 2021-04-07
        • 1970-01-01
        • 2020-02-26
        • 2018-10-20
        • 1970-01-01
        • 2021-10-18
        相关资源
        最近更新 更多