0
假設我有兩個原子對象方法operation1
和operation2
,它們將自己的撤消操作註冊到undoManager
。如果我批量調用operation3
,即調用前兩個操作和組,撤消回調時使用beginUndoGrouping/endUndoGrouping
,則撤消時,NSUndoManager
不會對重做操作進行分組。如何使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
}
看來,我在複合方法中組合可撤銷操作的意圖是錯誤的:我最終寫了很多樣板代碼,只是爲了使'撤銷/重做'複合操作堆棧按正確的順序堆棧。 – UncleAli