让NSSearchField使用NSTokenFieldCell?

10

我正在尝试模拟Mail.app和Finder.app上10.7+的标记搜索功能,其中似乎有一个NSSearchField,左侧有搜索放大镜图标,右侧有取消(x)按钮,但还包括搜索字段内的标记。

带令牌的NSSearchField

是否有办法使NSSearchField使用NSTokenFieldCell而不是NSSearchFieldCell? 我已经尝试在NSSearchField实例上调用-setCell:,它有效并且似乎交换了单元格,可以通过在调试器中调用po [searchField cell]进行证明,但是搜索字段的绘制会中断,并且不会绘制文本字段。

我是以正确的方式处理这个问题吗,还是有更好的方法来解决它? 谢谢!

更新10/25/2016:使用辅助功能检查器,我发现Finder和Mail使用混合私有子类:

  • SGTSearchField:NSSearchField
    • SGTSearchFieldCell:NSSearchFieldCell
    • SGTTokenFieldCell:NSTokenFieldCell

这些是私有框架Suggestions.framework的一部分。 希望苹果将来会公开这些类。如果您也想看到此功能变为公共,请务必提交radar


当我尝试实现令牌化搜索栏时,我遇到了同样的问题。由于之前我使用的是NSSearchField,我也在寻找将NSSearchField和NSTokenField结合起来的方法。你有找到任何解决方案吗? - Allen Hsu
1个回答

0

我给你们两个的最佳答案是使用NSTokenField。你可能可以修改它来显示小的搜索图标。但如果这不是必须的,你可以从NSTokenField中获得很多令牌化的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接