UITextView 和 NSUndoManager 同步

Posted

技术标签:

【中文标题】UITextView 和 NSUndoManager 同步【英文标题】:UITextView and NSUndoManager synchronisation 【发布时间】:2011-06-21 14:48:26 【问题描述】:

我已尝试先搜索,但找不到我需要的确切内容。

我有一个 UITextView,并且我有按钮在 UITextViews NSUndoManager 上执行撤消和重做操作,因此该部分可以正常工作,但问题来了。撤消操作正在撤消我在文本视图成为第一响应者后创建的所有更改,因此能够进行详细的撤消或重做操作,这些操作仅撤消或重做最后一个操作,而不是从 UITextView 成为第一响应者的那一刻起执行的所有操作我应该有这样的代码:

- (void)textViewDidChange:(UITextView *)textView

    [textView resignFirstResponder];
    [textView becomeFirstResponder];

但此代码不是解决方案,它可以工作,但我想以与上面代码相​​同的方式同步 UITextView 中执行的操作,但不将 UITextView 作为第一响应者。

Tnx 寻求帮助。

【问题讨论】:

【参考方案1】:

如果我没有错,每个撤消/重做操作都按事件循环分组。如果你在同一个事件循环中做很多事情,所有这些事情都会形成同一个动作。

【讨论】:

是否可以在每次更改文本时创建新的事件循环? 你使用的是textView自带的NSUndoManagermyUndoManager = [textView undoManager];吗? 是的,我是。也许改用 NSInvocations 试试?!

以上是关于UITextView 和 NSUndoManager 同步的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 解决字数限制问题和placehorder问题

UIDatePicker 和 UITextView

更新应用程序和 UITextView 的问题

在 uitextfield 和 uitextview 上添加内阴影

在 UITextView 中添加按钮和文本

UIMenuController 和 UITextView 选定的文本