在Mac催化剂上使用撤消管理器

时间:2020-02-13 14:28:37

标签: ios swift macos uikit mac-catalyst

我正在将Mac构建目标添加到iOS应用程序。我有基本的知识,想实现撤消/重做功能。

在传统的AppKit应用程序中,您可以免费获得它。创建新应用程序时,预填充的主菜单下有“编辑”项以及“撤消和重做”。视图控制器具有一个undoManager,您只需在其上registerUndo(最好也是setActionName),一切正常。热键,菜单项标题更改和状态更改(在堆栈顶部时禁用重做等)都可以直接使用。

向iOS项目添加催化剂构建目标还会创建一个默认菜单,该菜单具有顶层的“编辑”菜单和“撤消/重做”菜单项。这些似乎没有采用内置功能。我是否真的需要手动重新创建AppKit提供的所有免费内容,或者我缺少什么?

2 个答案:

答案 0 :(得分:0)

您是否正在注册撤销事件的观点上致电becomeFirstResponder()?这使我绊了一段时间。

我无法在Catalyst的“编辑”菜单中显示动作名称,但是我确实看到UIKit代码中的“撤消/重做”堆栈正常工作,而不必使用AppKit。

答案 1 :(得分:0)

NSWindow.undoManager上注册撤消对我有用。但是我不得不使用一个隐藏的/私有的API来使用Dynamic库访问NSWindow实例:

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