我有一个应用程序允许用户上下移动UIViews,外观上一个视图可以在另一个视图之上。通过使用 exchangeSubviewAtIndex 方法更改超视图中UIView的索引,更改UIView的“级别”(父级子视图中的索引)非常简单。
/---------/
IDX 1 / A /
/---------/
/---------/
IDX 0 / B /
/---------/
Move 'A' Down
/---------/
IDX 1 / B /
/---------/
/---------/
IDX 0 / A /
/---------/
现在,我正在使用NSUndoManager记录更改,以便用户可以撤消向下移动操作。这工作正常。尝试在NSUndoManager上执行重做消息时会出现此问题。因为在被移动的UIView上没有“ZIndex”的状态(因为它是在它的父视图中的位置),所以重做没有做任何事情....
有没有办法显式传递重做的重做调用?
答案 0 :(得分:1)
好的,我的问题是对撤消管理器的重做部分的误解。结果是撤销管理器的重做是另一个撤销,它只知道它在撤销过程中并将调用添加到重做堆栈。
这篇文章是我的关键: NSUndoManager: redo not working