如何实现像Finder

时间:2015-07-25 14:50:00

标签: objective-c macos swift cocoa

Finder's search field

在我的OS X应用程序(使用Cocoa)中,我想实现一个像Finder中的搜索字段(参见上面的屏幕截图)。

我正在考虑继承NSSearchFieldNSSearchFieldCell。后者应负责管理“代币”。我已阅读View Programming GuideControl and Cell Programming Topics以及NSTokenField[Cell]NSSearchField[Cell]NSCell的文档。

我不清楚一些事情:

1)在子类中,如何重用NSSearchFieldCell可能提供的放大镜图标?图标是NSImage吗?它有一个动画,我应该学习什么如果我必须自己实现动画?

2)应该使用什么来实现下拉按钮(如示例图像中的“NAME”按钮)。用于对搜索类别(例如“NAME”)和关键字(例如“yh”)进行分组的类别是什么? “NAME”之后的“箭头”是什么?

也欢迎任何书籍,文章或其他资源建议。

类似且相关的问题是Mail like search field with tokens (Mac OS X 10.7)

2015-07-26更新:

自Yosemite以来,NSCell的使用已发生变化, How to create a custom themed NSButton without subclassing NSButtonCell? 与该主题相关。单元格将被弃用,因此使用它是不明智的。

1 个答案:

答案 0 :(得分:1)

这看起来很有趣。我会考虑子类化NSTextField并创建一个图像映射到文本条目,您可以将其添加到包含所有搜索约束的leftView属性。

当您添加图像以描述搜索约束以及放大镜时,您的文本应自动切换,并且应该与您在照片中的内容类似。

祝你好运。