我在我的应用程序中有撤消/重做工作。
我将撤消和重做菜单操作的目标设置为我的应用程序委托,以使用 undoAction: 和 redoAction: 方法实现这些操作。菜单项的启用绑定绑定到我的撤消管理器的 canUndo 和 canRedo 属性,并且这些属性按预期工作。当我推送到撤消堆栈时,我设置了一个操作名称,但从未在菜单中看到它。
为什么我的菜单总是显示 Undo 或 Redo,而不是 Undo Move to Trash 和 Redo Move to Trash ?菜单项通常会被我绕过的一些魔法更新吗?我没有使用响应者链,因为我的应用程序委托不在响应者链中,因此永远看不到操作。
撤消管理器是在我的应用程序委托中创建的。
更新:更改为使用窗口的撤消管理器没有区别。
-(void)undoableRemoveItemsFromListAtIndexes:(NSIndexSet*)itemIndexes;
{
NSArray *removedItems = [[self.listController arrangedObjects] objectsAtIndexes:itemIndexes];
[[self.undoManager prepareWithInvocationTarget:self] undoableAddItems:removedItems toListAtIndexes:itemIndexes];
[self removeItemsFromListAtIndexes:itemIndexes];
[self.undoManager setActionName:@"Move to Trash"];
}