我想向我的 Mac 应用程序添加撤消/重做功能。该应用程序可与笔记一起使用,我想在用户删除笔记时添加“撤消”操作。
这工作得很好,“撤消删除注释”菜单在用户删除注释后变为事件状态,但是在使用“撤消删除注释”命令后,有一个“重做删除注释”菜单变为事件状态。
目前,当我单击“重做删除注释”时,没有任何反应,因为我没有注册操作。我不希望用户能够通过撤消/重做堆栈意外删除注释。
是否可以添加“撤消”操作而不添加“重做”操作?
最佳答案
一般情况下不会。这样做将违反平台标准撤消/重做机制的隐式契约。你希望你注册的东西是对称的。如果用户删除注释,则可用的撤消操作应该恢复该注释。如果用户选择撤消,则重做操作将是再次“删除注释”。如果用户通过撤消或重做“意外”删除了一条注释,那也没关系,因为他们应该始终能够通过执行相反的操作来恢复它,对吗?
别想太多。
关于objective-c - NSUndoManager:禁用 "redo"进行破坏性操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23786514/