iOS - UITextView + NSUndoManager

标签 ios cocoa-touch uitextview nsundomanager uitextviewdelegate

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

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

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

  • 在 textViewDidChange 中我可以获得整个文本
  • 在 textViewShouldChangeTextInRange 中,我可以插入最后一个字符

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

提前致谢

最佳答案

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

myUndoManager = [textView undoManager];

你想在哪里执行操作

[myUndoManager undo]; // or redo

有时候我真的很笨,我几乎在写自己的撤消代码......我希望这可以帮助别人

关于iOS - UITextView + NSUndoManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079490/

相关文章:

iphone - 防止 subview 在 UIScrollView 中滚动

swift - iOS 9 Swift,基于内容的 UITextView 高度

ios - Swift,NSCoding 来保存一个类的数组不起作用

ios - 使用上下尾随和前导时,将 uilabel 中的文本与标签顶部对齐

iphone - 使用获取的结果 Controller 进行排序会导致部分标题错误

ios - 当用户在任何地方键入时,如何强制 UITextView 使用默认的 NSFont 属性

objective-c - iOS UITextView - setText 方法不显示我的文本?

ios - 导航栏上的后退按钮文本太长

ios - 自定义 UITextField 委托(delegate)设置为自启动无限循环

ios - 放大 UIImageView 和 UIImageView.center