iOS - UITextView + NSUndoManager

eli*_*o.d 9 cocoa-touch uitextview nsundomanager uitextviewdelegate ios

我试图在UITextView(我正在构建一个LateX编辑器)中集成撤消/重做功能而没有运气,说实话我真的很困惑这个论点.我不明白这两个操作涉及的步骤,我的意思是我需要两种方法

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

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

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

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

提前致谢

eli*_*o.d 23

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

myUndoManager = [textView undoManager];
Run Code Online (Sandbox Code Playgroud)

您要执行操作的位置

[myUndoManager undo]; // or redo
Run Code Online (Sandbox Code Playgroud)

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