我想用一组预定值制作一个NSComboBox
。基础对象是自定义的Swift结构,我正在使用自定义NSValueTransformer
将它们与我存储的基础字符串表示形式进行相互转换。
我想限制用户使用弹出窗口中的选项,但仍然允许自动完成。我正在使用它的数据源,并且正在使用Cocoa绑定到Core Data对象,并尝试使用KVO Core Data验证,就像我在常规(非组合)文本字段中使用的那样,但是字段没有值转换器。
第一个问题是,如果我将行为设置为Selectable
,则转换将正确进行并保存正确的值,并且转换后的值将传递到KVO验证。但是,这样用户将无法键入并获得自动补全功能。如果我设置了Editable
,则可以键入并自动完成,但是不会转换,验证或保存任何值。
我想要适当的KVO验证,以便可以防止用户输入任意值-我想要自动补全,而不是自由格式的输入。
这些是我的组合框的“属性和绑定”检查器:
答案 0 :(得分:1)
NSComboBox 旨在允许用户输入除菜单项列表以外的自定义值,因此它包括一个文本字段。如果您不希望出现这种情况,可以使用 NSPopUpButton ,其中仅包含项目列表。弹出按钮本身并没有自动补全功能,但与其他菜单一样,可以通过键入名称来选择项目。