1

我有一个应用程序,它允许用户上下移动 UIViews,让外观一个视图可以位于另一个视图之上。通过使用exchangeSubviewAtIndex方法更改超级视图中 UIView 的索引,更改 UIView 的“级别”(父子视图中的索引)非常简单。

         /---------/
IDX 1   /    A    /
       /---------/
         /---------/
IDX 0   /    B    /
       /---------/


Move 'A' Down


         /---------/
IDX 1   /    B    /
       /---------/
         /---------/
IDX 0   /    A    /
       /---------/

现在,我使用 NSUndoManager 来记录更改,以便用户可以撤消下移操作。这工作正常。尝试在 NSUndoManager 上执行重做消息时会出现问题。由于正在移动的 UIView 上没有“ZIndex”状态(因为它是其父视图中的一个位置),因此重做不会做任何事情......

有没有办法明确传递重做的重做调用?

4

1 回答 1

1

好的,我的问题是对撤消管理器的重做部分的误解。原来撤消管理器的重做是另一个撤消,它只知道它在撤消过程中并将调用添加到重做堆栈中。

这篇文章是我的关键: NSUndoManager: redo not working

于 2012-10-24T20:58:06.620 回答