显式设置NSUndoManager的重做调用

时间:2012-10-16 17:30:31

标签: ios nsundomanager

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

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


Move 'A' Down


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

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

有没有办法显式传递重做的重做调用?

1 个答案:

答案 0 :(得分:1)

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

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