Macos 如何找到撤消:、重做:菜单选项的第一响应程序?

Macos 如何找到撤消:、重做:菜单选项的第一响应程序?,macos,cocoa,macos-sierra,Macos,Cocoa,Macos Sierra,我正在尝试使用ValidateNuItem临时禁用用户菜单中的撤消和重做。我这样做是为了防止云操作被撤销时,重复的撤销速度过快 我尝试将ValidateNuItem方法放在响应程序链中提到的每个类中,即NSView、NSViewController、NSTableView、NSWindowController、AppDelegate或它们的子类。然而,我在那里得到的唯一菜单项是定制的,我制作的 标准方法,如撤消、重做、剪切、复制等都不会出现 还有其他可能性吗?这些问题的第一反应者在哪里?我也这么

我正在尝试使用ValidateNuItem临时禁用用户菜单中的撤消和重做。我这样做是为了防止云操作被撤销时,重复的撤销速度过快

我尝试将ValidateNuItem方法放在响应程序链中提到的每个类中,即NSView、NSViewController、NSTableView、NSWindowController、AppDelegate或它们的子类。然而,我在那里得到的唯一菜单项是定制的,我制作的

标准方法,如撤消、重做、剪切、复制等都不会出现


还有其他可能性吗?这些问题的第一反应者在哪里?

我也这么认为。还是没有线索,不管第一反应者在哪里。问题是“如何拦截撤消和重做菜单命令?”。您是否使用核心数据或NSDocument?是的,这正是我想做的,但我发现唯一可以做的地方是ValidateNuItem,它似乎与第一响应者有关。实际上,我只使用undoManager!。registerUndoWithTarget,而不是CoreData或NSDocument。(我的意思是,我只在项目中使用coredata,而不是直接使用其undo管理器)响应程序链中实现菜单项操作的第一个对象将获得
validateNuItem
消息。如果希望视图控制器获取撤消
validateNuitem
消息,请实现
undo: