使NSSearchField使用NSTokenFieldCell?

And*_*rew 8 cocoa nstokenfield nscell nssearchfield nstokenfieldcell

我试图在10.7+上模拟Mail.app和Finder.app的标记化搜索功能,其中看起来像是一个NSSearchField,左边是搜索放大镜图标,右边是cancel(x)按钮,但是还包括搜索字段内的标记.

带有令牌的NSSearchField

有没有办法让NSSearchField使用NSTokenFieldCell而不是NSSearchFieldCell?我已经尝试调用-setCell:NSSearchField实例,该实例可以通过调用po [searchField cell]调试器来替换单元格,但是搜索字段的绘制中断并且没有绘制文本字段.

我是以正确的方式接近这个还是有更好的方法来做到这一点?谢谢!

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

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

这些是名为的私有框架的一部分Suggestions.framework.希望Apple将来能够公开这些课程.如果您希望公开此功能,请确保提交雷达.

Sco*_*ton 0

我给你们两个的最佳答案就是简单地使用 NSTokenField 。您也许可以修改它以显示小搜索图标。但如果这不是成败,你可以从 NSTokenField 获得很多标记化的功能。