代码之家  ›  专栏  ›  技术社区  ›  Dov

带NSValueTransformer的NSComboBox自动完成

  •  0
  • Dov  · 技术社区  · 6 年前

    我想做一个 NSComboBox 带有预定值的列表。底层对象是一个自定义的Swift结构,我使用的是 NSValueTransformer 将它们转换为我正在存储的底层字符串表示形式。

    我想限制用户在弹出窗口中的选项,但仍然允许自动完成。我为它使用了一个数据源,并且使用了对核心数据对象的Cocoa绑定,并尝试使用KVO核心数据验证,就像我在常规(非组合)文本字段中使用的一样,但是该字段没有值转换器。

    第一个问题是如果我将行为设置为 Selectable ,转换将正确进行并保存正确的值,转换后的值将传递给KVO验证。但用户无法键入并获取自动完成功能。如果我设置 Editable ,则可以键入并自动完成,但不会转换、验证或保存任何值。

    我希望KVO验证到位,这样就可以防止用户输入任意值-我希望自动完成,但不是自由输入。

    以下是组合框的属性和绑定检查器:

    0 回复  |  直到 6 年前
        1
  •  1
  •   red_menace    6 年前

    一个 除了菜单项列表外,还允许用户输入自定义值,因此它包含一个文本字段。如果你不想这样做 NSPopUpButton按钮 可以使用,它只有一个项目列表。弹出式按钮本身没有自动完成功能,但与其他菜单一样,可以通过键入名称来选择项。