NSLayoutManager
Swiftクロージャーを使用して使用する方法を理解しようとしています。undo
次のように正常に登録できます。
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
}
undoManager?.setActionName("do thing")
もちろんredo
、アンドゥのアンドゥに相当するものをサポートする必要があります。私はそれを行うことができます:
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
doThing();
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
しかし今、やり直しの取り消しをサポートする必要があります...うーん....わかりました:
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
ご覧のとおり、その「カメがずっと下に」。この狂気から逃れるにはどうすればいいですか?つまり、私が見つけることができるすべてのサンプルコードで、コードのセレクターバージョンを使用して、それ自体を元に戻すことができるメソッドを登録します-これは、私が使用しているクロージャーメソッドでは明らかに実行できません...クロージャーをどのように使用しますか?バージョンと無制限の元に戻す/やり直しを取得しますか?