【问题标题】:Nested redo group with NSUndoManager使用 NSUndoManager 嵌套重做组
【发布时间】:2012-12-04 13:55:58
【问题描述】:

假设我有两个原子对象方法operation1operation2,它们将自己的撤消操作注册到undoManager。如果我批量创建operation3,它会调用前两个操作并将撤消回调与beginUndoGrouping/endUndoGrouping 组合在一起,撤消时,NSUndoManager 不会对重做操作进行组合。如何让NSUndoManager将撤消组映射到重做组?

示例代码:

- (void)operation3
{
    [undoManager beginUndoGrouping];
    [self operation1]; // [undoManager setActionName:@"op1"];
    [self operation2]; // [undoManager setActionName:@"op2"];
    [undoManager endUndoGrouping];
    [undoManager setActionName:@"op3"];
    // call operation3 -> "Edit - Undo op3" -- OK
    // press Command+Z -> "Edit - Redo op1" -- not OK
}

【问题讨论】:

    标签: nested undo-redo nsundomanager


    【解决方案1】:

    您必须在撤消期间再次设置操作名称。我认为您在撤消期间仅设置了“op1”。

    【讨论】:

    • 看来我在复合方法中组合可撤消操作的意图是错误的:我最终编写了大量样板代码只是为了使undo/redo 复合操作按正确顺序堆叠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2014-04-01
    • 2011-08-07
    • 2012-10-06
    • 1970-01-01
    • 2023-03-25
    • 2014-07-10
    相关资源
    最近更新 更多