NSUndoManager:禁用“重做”以进行破坏性操作

时间:2014-05-21 14:41:54

标签: objective-c cocoa nsundomanager

我想在我的Mac应用中添加撤消/重做功能。该应用程序使用笔记,我想在用户删除笔记时添加“撤消”操作。

这很好用,用户删除了一个音符后“撤消删除音符”菜单变为活动状态,但在使用“撤消删除音符”命令后,有一个“重做删除音符”菜单变为活动状态。

当我点击“重做删除注释”时,没有任何反应,因为我没有注册一个动作。我不希望用户能够通过撤消/重做堆栈意外删除注释。

是否可以在没有“重做”操作的情况下添加“撤消”操作?

1 个答案:

答案 0 :(得分:0)

不是常见的情况。这样做将违反平台标准撤销/重做机制的隐式契约。您希望注册的内容是对称的。如果用户删除了注释,则可用的撤消操作应该将注释恢复。如果用户选择撤消,则重做动作将是"删除注释"再次。用户"意外"并不重要。通过撤消或重做删除一个注释,因为它们应该总是能够通过执行反向操作来恢复它,对吗?

不要过分暗示这一点。