我想了解/复制“按运行循环传递/循环分组”功能NSUndoManger
:
NSUndoManager
在同一个运行循环循环中多次调用时,可以将多个调用组合registerUndo()
成一个“撤消”操作。这是由 确定的NSUndoManager.groupsByEvent
,默认情况下设置为true
。
所以是这样的:
// User clicks button... (causes a new run loop event)
undoManager.registerUndo(...) // #1
undoManager.registerUndo(...) // #2
...产生一个撤消组,然后单击编辑 → 撤消一次还原两个更改。
不知何故,NSUndoManager 可以确定两个调用registerUndo()
是否在同一个运行循环周期中。这是如何运作的?
我的用例:
我有在用户与 UI 交互(例如单击按钮)后发送属性更改通知的代码。作为用户操作的结果,可以有一个或多个事件。我想将它们分组并在当前运行循环结束时只更新一次 UI。