如何在 MacOS 应用程序中执行 Apple Finder -> 文件信息 -> 添加标签功能?

How do I do Apple Finder -> File Info -> add tag feature in MacOSX app?

在我的 MacOSX 应用程序中,我需要创建类似于 Apple 在文件信息屏幕中为文件功能添加标签的功能。现在,我创建了一个 NSTextField,用户可以在其中键入调用的文本:

func controlTextDidChange(aNotification: NSNotification) 

在此方法中,我在 NSTextField 正下方显示了一个 NSTableView。 我有一个数组,其中包含加载到表视图中的内容。我没有使用 NSSearchField,因为我不想在框中使用放大图标。设计还要求所选择的标签成为小按钮,就像 Apple 的设计一样,可以在同一个文本字段中,也可以在正下方。框架中是否已经内置了任何东西来轻松地做到这一点或任何第 3 方?我一直在搜索时遇到问题,大部分结果都试图教我如何为文件创建标签。

我在 tableview 中有所选项目的字符串,然后成为文本字段下方 space 中按钮的标题。

本设计的第二部分是删除标签按钮。现在,我在选择按钮时将突出显示状态设置为 true,然后使用以下命令检测删除键:

override func keyUp(theEvent: NSEvent) {
if theEvent.keyCode == 51 {
  if appDelegate.uploaderController.tagButton.highlighted == true {
    appDelegate.uploaderController.tagButton.hidden = true
  } 
}

如果点击删除键时tagButton高亮显示,则该按钮隐藏(可能切换为删除)。

再次强调,如果有人对设计有更好的想法,知道任何事情built-in,甚至已经完成,请告诉我!谢谢!

最好的起点可能是NSTokenField。这将为您提供自动完成功能(使用该字段下方的一个小下拉菜单)。查看 NSTokenFieldDelegatetokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:。它还会将标签制作成椭圆形的小对象,您可以四处拖动、删除等。

NSTokenField reference