gpt4 book ai didi

cocoa - 如何确保撤消和重做菜单项添加了操作字符串?

转载 作者:行者123 更新时间:2023-12-03 16:44:23 26 4
gpt4 key购买 nike

我的应用程序中可以进行撤消/重做操作。

我将撤消和重做菜单操作的目标设置为我的应用程序委托(delegate),以使用 undoAction: 和 redoAction: 方法实现操作。菜单项的启用绑定(bind)绑定(bind)到我的撤消管理器的 canUndo 和 canRedo 属性,并且这些按预期工作。当我推送到撤消堆栈时,我设置了一个操作名称,但从未在菜单中看到它。

为什么我的菜单总是显示“撤消”或“重做”,而不是“撤消移至废纸篓”和“重做移至废纸篓”?菜单项通常会被我绕过的某些魔法更新吗?我没有使用响应者链,因为我的应用程序委托(delegate)不在响应者链中,因此永远看不到操作。

撤消管理器是在我的应用程序委托(delegate)中创建的。

更新:更改为使用窗口的撤消管理器没有什么区别。

-(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"];
}

最佳答案

检查撤消管理器是否正在撤消并适当交换字符串。

NSUndoManager * um = [self undoManager];
// ...
[um setActionName:([um isUndoing]) ? @"Remove Foo" : @"Add Foo"];

重要的是要记住重做是推送到重做堆栈的撤消。

关于cocoa - 如何确保撤消和重做菜单项添加了操作字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5386870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com