在Cocoa应用程序中禁用撤消/重做

Seb*_*ian 5 cocoa undo nsundomanager

我已经实现了撤销/重做标准方式(NSUndoManager),但无法弄清楚当我的应用程序处于特定状态时如何禁用撤消/重做.

用户在我的应用程序中绘制内容,当他们绘制的内容正在上传时,我禁用了UI,当然也不希望用户能够撤消/重做.

我使用NSView的撤销管理器,所以我猜一种方法可能就是让该视图辞职第一响应者.还有另外一种方法吗?

Mar*_*ein 1

您可以完成撤消和重做

 - (void) removeAllActions;
Run Code Online (Sandbox Code Playgroud)

或删除特定目标的操作

 - (void) removeAllActionsWithTarget: (id) target;
Run Code Online (Sandbox Code Playgroud)

如果您只是想暂时禁用任何操作,保持撤消堆栈不变,只需使用 NSMenuValidationProtocol 禁用撤消/重做菜单项

 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
Run Code Online (Sandbox Code Playgroud)