gpt4 book ai didi

objective-c - 删除 NSTokenFieldCell 的回调

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

我有一个 NSTokenField 和 NSTokenFieldCell 代表托管对象。当我通过键入创建一个新的 NSTokenFieldCell 时,我的 NSTokenField 的委托(delegate)(NSArrayController)将使用以下方法回调:

tokenField:representedObjectForEditingString

在此方法中,我为新 token 单元创建一个托管对象,它按预期工作。

但是,我找不到用于删除 NSTokenFieldCell 的回调方法,我可以在其中删除我的托管对象。有人知道这是否存在吗?如果没有,我想我将不得不以某种方式监视 NSTokenField 是否有删除,这听起来不太理想。

最佳答案

很难准确理解您的要求。您真的是在创建和删除 NSTokenFieldCells 吗?我不认为你这样做 - NSTokenField 控件有一个 NSTokenFieldCell 实例。整个程序集仅将某些字符串(您通过 NSTokenFieldDelegate 协议(protocol)控制)表示为图形“ token ”。该单元格不会每次都重新创建,只会重新创建它所代表/绘制的内容。

您的意思是说您希望在从字段中删除标记化字符串时收到通知吗?如果是这样,恐怕这不是它设计的工作方式。 决定对哪些字符串(由您告诉标记字段使用的标记化字符集分隔)进行标记,以及将哪些替换字符串(通常是缩短或清理的版本)显示为标记本身。因此,由来确定模型中的“ token ”现在是否丢失并自行清理。

简单地说:Cocoa Bindings 中没有可以执行此操作的工具。最好保留一个“-tokensNeedCleaning”标志,并以与 NSView 一起使用 -setNeedsDisplay: 和 -displayIfNeeded 方法相同的方式对待它。这样,当编辑 token 字段时,您可以调用[self setTokensNeedCleaning:YES]。反过来,该方法可以通过 -performSelector:withObject:afterDelay: 调用“[self cleanTokensIfNeeded]”(延迟为零),以在 needCleaning 标志为 YES 时安排清理丢失的 token 。然后它会取消设置该标志。

这个简单的机制可以防止清理例程在每次连续编辑时运行,而是标记它并安排它在不久的将来运行(如果仍然需要)。这样,对 -cleanTokensIfNeeded 的连续计划调用将不会继续盲目地尝试清理 - 清理调用将被合并。

关于objective-c - 删除 NSTokenFieldCell 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357624/

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