具有NSValueTransformer的NSComboBox自动补全功能

时间:2019-06-18 02:33:36

标签: xcode macos cocoa interface-builder nscombobox

我想用一组预定值制作一个NSComboBox。基础对象是自定义的Swift结构,我正在使用自定义NSValueTransformer将它们与我存储的基础字符串表示形式进行相互转换。

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

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

我想要适当的KVO验证,以便可以防止用户输入任意值-我想要自动补全,而不是自由格式的输入。

这些是我的组合框的“属性和绑定”检查器:

1 个答案:

答案 0 :(得分:1)

NSComboBox 旨在允许用户输入除菜单项列表以外的自定义值,因此它包括一个文本字段。如果您不希望出现这种情况,可以使用 NSPopUpButton ,其中仅包含项目列表。弹出按钮本身并没有自动补全功能,但与其他菜单一样,可以通过键入名称来选择项目。