问题标签 [nstokenfield]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
600 浏览

objective-c - NSTokenFieldCell 子类强制使用核心数据对多关系

我遇到了一个有趣的难题(当然,我可能只是在做一些非常错误的事情)。

我想要一个 NSTokenField 来“代表”核心数据应用程序中的关系。前提是:您从 TableView(从 Notes Array Controller 加载)中单击注释。然后将令牌字段(通过“值”)绑定到 Notes Array Controller selection.Tags。标签是实体 Notes 上的一对多关系。

显然,一个 NSTokenField 不会接受 Array Controller 提供给它的 NSSet。为了解决这个问题,我将 NSTokenFieldCell 子类化并覆盖了它的objectValuesetObjectValue:方法。我认为我可以简单地翻译提供给 NSTokenFieldCell 预期的 NSArray 的 NSSet。(注意:我最初尝试在 NSTokenField 子类上覆盖这些方法;但是,它们没有被调用。)

所以,我想出了上述代码:

它崩溃了。:( 而且,令人惊讶的是,它在调用的线路上崩溃了[super objectValue]。它给了我错误:

-[NSConcreteAttributedString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance ...

叹。可悲的是,当我进入 Core Data XML 文件并给 Note 一个标签时,它正确显示,并[super setObjectValue:]传递了一个字符串数组。但是,一旦我输入其他内容并将鼠标移开,就会出现错误。

我不知道该怎么办。任何人都可以发现这有什么可怕的错误吗?谢谢。

更新:如果有所作为,我没有为 TokenField 配置委托。

0 投票
1 回答
550 浏览

cocoa - 我想在光标的插入点插入令牌,而不是数组的末尾

我有一个将令牌添加到 NSTokenField 的按钮。它总是将令牌添加到字段的末尾:

因为它是从 currentField objectValue 中抓取数组,然后通过添加对象来创建数组。

我想让它知道光标的插入点并将对象插入到生成的 currentField objectValue 中,这样我就可以使用正确排序的标记设置 currentField 的 ObjectValue。谢谢大家的帮助

0 投票
1 回答
1225 浏览

objective-c - 填充令牌后调整 NSTokenField 的大小

我使用 NSTokenField 作为用户输入标签的一种方式。一切正常,当用户添加或删除标签时,它与管理标签的 CoreData 挂钩。

我最近添加了逻辑,以便 NSTokenField 在用户添加标签时垂直调整大小,并使用 Andrew Bowman 的IFVerticallyExpandingTextField中断到下一行。同样,这一切都很好。

问题是,当我最初必须用标签填充 NSTokenField 时,我需要它来调整大小。我通过调用填充该字段:

其中 anArray 是代表标签或 Token 的一系列对象。这反过来调用 NSTokenField 委托方法

它返回前一个数组中传递的对象的字符串表示形式。

在调用 displayStringForRepresentedObject 之后,我需要调整 NSTokenField 的大小。有没有人有任何关于通知或发现它已经完成的方法的想法?甚至在每次调用 displayStringForRepresentedObject 之间调用调整大小的方法也可能有效。

提前致谢。

0 投票
2 回答
330 浏览

cocoa - 当鼠标离开未选中的 NSTokenField 时 NSTokenField 标记消失

奇怪的 UI 错误正是此链接报告的内容:

http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg53307.html

如果我将鼠标移动到未选择/当前正在编辑的字段中,然后开始将鼠标移出,我的 NSTokenField 中的标记就会消失。

令牌只是闪烁消失。

0 投票
3 回答
1157 浏览

objective-c - NSTokenField 代表 Core Data 的多对多关系

我在弄清楚如何在 NSTokenField 中表示多对多关系模型时遇到问题。我有两个(相关)模型:

物品标签

一个项目可以有很多标签,一个标签可以有很多项目。所以这是一个反多对关系。

我想做的是在 NSTokenField 中表示这些标签。我想最终得到一个自动建议匹配项的标记字段(找到了一种使用 tokenfield:completionsForSubstring:indexOfToken:indexOfSelectedItem 的方法),并且如果它与现有标记实体不匹配,则能够添加新标记实体。

好吧,希望你还在我身边。我正在尝试使用绑定和数组控制器来完成所有这些工作(因为这是最有意义的,对吧?)

我有一个数组控制器“项目数组控制器”,它绑定到我的应用程序委托 managedObjectContext。显示所有项目的 tableview 绑定到此数组控制器。

我的 NSTokenField 的值绑定到数组控制器选择键和模型键路径:标签。

使用此配置, NSTokenField 不会显示标签。它只是给了我:

这对我来说很有意义,所以不用担心。我查看了一些 NSTokenField 委托方法,似乎我应该使用:

问题是,这个方法没有被调用,我得到了和以前一样的错误。

好的,所以我的下一步是尝试制作一个 ValueTransformer。从带有标签实体的数组转换 -> 带有字符串(标签名称)的数组都很好。另一种方式更具挑战性。

我尝试的是在我的共享应用程序委托托管对象上下文中查找每个名称并返回匹配的标签。这显然给我带来了不同托管对象上下文的问题:

我哪里错了?我该如何解决这个问题?它甚至是正确的方法吗(我觉得你必须使用 ValueTransformer 很奇怪?)

提前致谢!

0 投票
2 回答
3417 浏览

objective-c - NSTokenField 与混合令牌/字符串输入,可能吗?

在 Mail 的NSTokenField中输入无效电子邮件时,会得到以下信息(令牌纯字符串值的混合):

替代文字

有什么可推荐的方法来实现这一点吗?
NSTokenField 甚至是正确的工具吗?还是我会滥用它?

在这个特定的项目中,我需要允许用户输入文件名模式
(尽管还有其他几个用例),并支持预定义的令牌。

现在我需要像这样输入输入:

我想把它改成这样的一些万无一失的图形解决方案: 替代文字

NSTokenField always(!) 将输入的文本转换为标记。

要么我在网络搜索中使用了错误的关键字,
要么我真的是第一个需要这种(混合)行为的人?!

我确实阅读了 Apple 的 NSTokenField 指南,但找不到任何关于我的问题的信息。

0 投票
1 回答
1080 浏览

cocoa - 单击 NSTokenField 中的令牌

单击 NSTokenField 中的令牌时是否可以获得事件?

0 投票
2 回答
690 浏览

cocoa - NSTokenField 建议但未完成

我觉得这一定是一个我正在努力解决的常见问题,但我找不到其他人问这个问题所以......基本上我有一个 NSTokenField 并且当用户开始输入时我制作了一个 SOAP请求并获取与他们输入的名称相似的名称。问题是我的建议不一定与他们输入的内容相符。例如,我匹配电子邮件和姓氏,但一个人的全名出现在建议数组中。由于字母不匹配,NSTokenField 将已经输入的内容更改为数组中的第一项。有没有办法关闭自动完成并只显示建议框?

0 投票
1 回答
994 浏览

objective-c - NSTokenField 委托

在 Apple 的“Token Field Programming Guide for Cocoa”中的“与代表的基本交互”部分中,当用户在令牌字段中键入一些文本时,代表会收到tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:消息。

当用户键入标记化字符时,委托会收到tokenField:representedObjectForEditingString:消息。

因此,当我实现这些方法时,它会以一种非常不同的方式表现自己。

有我的委托方法的实现:

当我在令牌字段中键入“maksim”然后删除它时,会出现一个日志:

2011-03-01 19:03:01.286 Aurum[23269:a0f] 代表ObjectForEditingString:m
2011-03-01 19:03:01.287 Aurum[23269:a0f] 代表ObjectForEditingString:m
2011-03-01 19:03:01.493 Aurum[ 23269:a0f] completionsForSubstring: m
2011-03-01 19:03:01.633 Aurum[23269:a0f]代表ObjectForEditingString: ma
2011-03-01 19:03:01.633 Aurum[23269:a0f] 代表ObjectForEditingString: ma
2011-03-01 19:03:01.637 Aurum[23269:a0f] completionsForSubstring: ma
2011-03-01 19:03:03.737 Aurum[23269:a0f] 代表ObjectForEditingString: mak
2011-03-01 19:03:03.737 Aurum[23269:a0f] 代表ObjectForEditingString : mak
2011-03-01 19:03:03.741 Aurum[23269:a0f] completionsForSubstring: mak
2011-03-01 19:03:05.089 Aurum[23269:a0f] 代表ObjectForEditingString:制作
2011-03-01 19:03:05.089 Aurum[23269:a0f] 代表ObjectForEditingString:制作
2011-03-01 19:03:05.094 Aurum[ 23269:a0f] completionsForSubstring: maks
2011-03-01 19:03:05.841 Aurum [23269:a0f]代表ObjectForEditingString: maksi
2011-03-01 19:03:05.841 Aurum [23269:a0f]代表ObjectForEditingString: maksi
2011-03-01 19:03:05.845 Aurum[23269:a0f] completionsForSubstring: maksi
2011-03-01 19:03:06.697 Aurum[23269:a0f]代表ObjectForEditingString: maksim
2011-03-01 19:03:06.697 Aurum[23269:a0f]代表ObjectForEditingString : maksim
2011-03-01 19:03:06.701 Aurum [23269:a0f] 完成子字符串: maksim
2011-03-01 19:03:12.353 Aurum[23269:a0f] 代表ObjectForEditingString: maksi
2011-03-01 19:03:12.354 Aurum[23269:a0f] 代表ObjectForEditingString: maksi
2011-03-01 19:03:12.853 Aurum[ 23269:a0f]代表ObjectForEditingString:制作
2011-03-01 19:03:12.854 Aurum [23269:a0f]代表ObjectForEditingString:制作
2011-03-01 19:03:12.936 Aurum [23269:a0f]代表ObjectForEditingString:制作
2011-03-01 19:03:12.937 Aurum[23269:a0f]代表ObjectForEditingString:mak
2011-03-01 19:03:13.020 Aurum[23269:a0f]代表ObjectForEditingString:ma
2011-03-01 19:03:13.020 Aurum[23269:a0f]代表ObjectForEditingString : ma
2011-03-01 19:03:13.103 Aurum[23269:a0f] 代表ObjectForEditingString: m
2011-03-01 19:03:13.104 Aurum [23269:a0f] 代表ObjectForEditingString:m

那么谁能解释我出了什么问题以及为什么令牌字段表现得如此奇怪?

0 投票
1 回答
689 浏览

nstokenfield - 如何进行混合输入 NSTokenField

我正在尝试获得NSTokenField允许在此处编辑类似帖子的工作。

提供的答案给了我钥匙,但仍然有问题。令牌字符集应该设置为什么?我的标签将采用这种格式“< token text >”。将字符标记器设置为“”会导致单词之间的“”被删除。

我应该使用什么作为令牌字符集?这真让我抓狂!