2010-03-21 73 views
0

我有一个文本视图,它从保存在模型对象中的属性字符串中获取其内容。我在抽屉中列出了几个这些模型对象,当用户点击其中一个时,文本视图交换其内容。文本视图的多个撤消管理器

我现在还需要交换撤消管理文本视图。我在我的模型对象上初始化一个撤销管理器,并使用undoManagerForTextView将它返回到文本视图,但有些事情不太正确。

战略地位日志报表显示我一切的工作按计划进行:在启动一个新的模型对象已正确初始化和一个非空撤消管理总是由文本视图拉动。但是当谈到真正做撤销时,我无法得到我想要的行为。

我打开一个窗口,输入一些东西,然后按CMD + Z,并撤消作品。 我打开一个窗口,输入内容,在表格上选择一个新模型,键入内容,回到第一个模型并尝试撤消,我得到的只是一个嘟嘟声。

的文件上Something让我提出一个眉毛,因为这意味着我不能有几个模型对象撤消:

默认的撤消和重做行为 适用于文本字段和文本只要 细胞作为字段或细胞是 第一响应者(即,键盘操作的 焦点)。一旦 插入点离开字段或 单元格,以前的操作不能被 撤消。

回答

2

你可能想继承NSUndoManager和覆盖removeAllActionsWithTarget:removeAllActions,至少要记录他们,可能是为了让他们无操作。

不要忘记实例子类,而不是原来的NSUndoManager的。 (很容易忘记,有些读者可能没有意识到,他们需要做到这一点。)

+0

我想我会去与核心数据。如果我将模型对象转换为托管实体,我将免费获得撤销。 – ruipacheco 2010-03-22 00:12:08

+0

您的方法似乎工作得很好,无需将核心数据添加到应用程序。谢谢! – ruipacheco 2010-03-25 12:17:22