Автозаполнение NSComboBox с NSValueTransformer - PullRequest
0 голосов
/ 18 июня 2019

Я хочу сделать NSComboBox со списком предопределенных значений. Базовые объекты - это пользовательская структура Swift, и я использую пользовательский NSValueTransformer для их преобразования в базовое строковое представление, которое я храню, и из него.

Я хочу ограничить пользователя параметрами во всплывающем окне, но разрешить автозаполнение. Я использую источник данных для него, и я использую привязки Какао к объекту Core Data, и попытался использовать проверку основных данных KVO, как я использую в обычном (не комбо) текстовом поле, но это поле не имеет преобразователя значения.

Первая проблема заключается в том, что если я установлю поведение на Selectable, преобразование произойдет правильно, и правильное значение будет сохранено, а преобразованные значения будут переданы в проверку KVO. Но тогда пользователь не может набрать и получить автозаполнение. Если я установлю Editable, тогда вы сможете печатать и автозаполнять, но никакое значение не будет преобразовано, проверено или сохранено.

Я хочу, чтобы проверка KVO была на месте, чтобы я мог запретить пользователю вводить произвольные значения - я хочу автозаполнение, но не произвольную запись.

Это мои инспекторы атрибутов и привязок для поля со списком:

image image

1 Ответ

1 голос
/ 18 июня 2019

NSComboBox разработан, чтобы позволить пользователю вводить пользовательские значения в дополнение к списку пунктов меню, поэтому он включает в себя текстовое поле. Если вам не нужно это поведение, можно использовать NSPopUpButton , в котором есть только список элементов. У всплывающей кнопки нет автозаполнения как такового, но, как и в других меню, элементы можно выбирать, набирая имя.

...