iOS – UITextView + NSUndoManager

我试图在UITextView(我正在构建一个LateX编辑器)中集成undo / redofunction而没有运气,说实话我真的对这个论点感到困惑。 我不明白这两个操作涉及的步骤,我的意思是我需要两种方法

  • 一个删除最后插入的文本
  • 一个恢复删除的文本

一个疑问是我在哪里获得最后插入的文本? 换句话说,我必须注册撤消?

  • 在textViewDidChange我可以得到整个文本
  • 在textViewShouldChangeTextInRange中我可以插入最后一个char

我知道我所写的并不是最好的解释,但我希望这里有人在过去遇到过同样的问题,可以给我一个提示。 基本上,为了恢复,我必须将撤消/重做function添加到textview,可能有两个与这些操作链接的按钮。

提前致谢

我现在感觉自己像个白痴:(解决方案非常简单…… textView已经有了一个undoManager,所以基本上对textView进行撤消/重做操作的步骤是:在viewDidload中:

myUndoManager = [textView undoManager]; 

您要执行操作的位置

 [myUndoManager undo]; // or redo 

我有时候真的很蠢,我差点写自己的撤销代码……我希望这可以帮助别人