gpt4 book ai didi

cocoa - NSTextField 编辑合并

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

我正在编写一个 Cocoa 应用程序,其中包含多个 NSTextFields。我试图将对文本字段中的文本的更改传播到我的模型层,但由于我在模型更新时注册撤消操作,这使得它比简单地监听 controlTextDidChange:.

如果我挂接到委托(delegate)方法controlTextDidChange:,那么每按下一个键就会调用一次它。如果我随后更新模型,模型会将每个单独的按键视为单独的撤消事件。这是不可取的。我想要的是当默认的“撤消键入”操作在撤消管理器中注册时收到通知,以便我可以更新模型。当我暂停打字一会儿时,NSTextField 会注册一个(而且只有一个)此类事件。不幸的是,我不知道这种情况何时发生。

我尝试监听 controlTextDidEndEditing:,并在该委托(delegate)方法中更新模型,但随后我必须在模型更新之前显式退出文本字段。由于我直接将模型对象存档在我的 NSDocument 子类中,因此如果用户在更改文本字段的内容后保存文档,但不按 Tab 键退出,则这样做将导致用户数据丢失首先是文本字段,因为模型无法及时更新。因此,这种技术行不通。

我还尝试连接到文本字段的字段编辑器(在 control:textShouldBeginEditing: 期间)并监听 textDidEndEditing:,但后来我发现这根本不' t 触发,因此模型不会更新,从而导致数据丢失,如上一段所述。谁能帮我解决这个问题吗?谢谢!

最佳答案

默认情况下,Apple NSTextField 会留下悬空编辑,如您所提到的。由于这个问题以及其他问题,我将 NSTextField 和 NSApplication 子类化,以按照应有的方式处理文本字段编辑:按“Enter”键、在字段外部单击以及其他操作应结束编辑并生成撤消条目。

此外,我强烈建议使用 GCUndoManager 替换 NSUndoManager。

关于cocoa - NSTextField 编辑合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47370265/

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