gpt4 book ai didi

cocoa - TextView 的多个撤消管理器

转载 作者:行者123 更新时间:2023-12-03 17:45:00 25 4
gpt4 key购买 nike

我有一个 TextView ,它从存储在模型对象中的属性字符串获取其内容。我在抽屉中列出了其中几个模型对象,当用户单击其中一个时, TextView 会交换其内容。

我现在还需要将撤消管理器交换为 TextView 。我在模型对象上初始化了撤消管理器,并使用 undoManagerForTextView 将其返回到 TextView ,但有些事情不太正确。

策略性地放置的日志语句向我展示了一切都按计划进行:启动时,新的模型对象已正确初始化,并且 TextView 始终拉动非空撤消管理器。但当涉及到实际撤消时,我就是无法获得我想要的行为。

我打开一个窗口,输入一些内容并按 cmd+z,然后撤消工作。我打开一个窗口,输入一些内容,在 table 上选择一个新模型,输入一些内容,返回到第一个模型并尝试撤消,但我得到的只是一声蜂鸣声。

Something文档上的内容让我扬起眉毛,因为这意味着我无法撤消多个模型对象:

The default undo and redo behavior applies to text fields and text in cells as long as the field or cell is the first responder (that is, the focus of keyboard actions). Once the insertion point leaves the field or cell, prior operations cannot be undone.

最佳答案

您可能想要子类化 NSUndoManager 并覆盖 removeAllActionsWithTarget:removeAllActions,至少记录它们,可能使它们无操作。

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

关于cocoa - TextView 的多个撤消管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com