gpt4 book ai didi

cocoa - 以编程方式更改内容后更新 NSTokenField

转载 作者:行者123 更新时间:2023-12-03 17:24:48 26 4
gpt4 key购买 nike

我已经实现了一个 NSTokenField,它使用一些自定义数据对象来显示动态数据。委托(delegate)设置良好并显示 token 的正确值。

我还在 token 上实现了一个菜单,允许选择用于显示每个 token 的格式。然而,我的问题是我无法使 NSTokenField 立即响应这些更改并使用新选择的格式重新绘制 token 。

如果我在 NSTokenField 外部单击,它会退出第一响应者,它会立即重绘。我还可以通过将第一响应者显式设置为零来以编程方式执行此操作。唯一的问题是 NSTokenField 失去焦点 - 将其重新分配为第一响应者会选择字段中的所有内容,因此用户可能会意外覆盖整个内容。

所以我的问题是是否有任何方法可以触发 NSTokenField 重绘其内容而不改变焦点和选择?

最佳答案

我遇到了同样的问题,发现唯一可行的解​​决方案是在每次内容更改时“重置” token 字段。基本上这可以归结为运行 View Controller 的以下方法来处理带有 token 字段的 View :

- (void) resetTokenField {

// Force the token field to redraw itself by resetting the represented object.

id anObject = [self representedObject];
[self setRepresentedObject: nil];
[self setRepresentedObject: anObject];
[[self tokenField] setNeedsDisplay: YES];

}

所表示的对象是保存所有正在显示的标记的对象。就我而言,这是一大块 Richt 文本,其中标记基本上是标签。

我发现 NSTokenField 非常令人头疼,但我坚持了下来,因为我非常喜欢它的呈现方式。

编辑:我的 token 字段已绑定(bind)到 View Controller 表示的对象的 tagsAsArray 方法。所以基本上我使用 Cocoa 绑定(bind)来解决这个问题。

关于cocoa - 以编程方式更改内容后更新 NSTokenField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508484/

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