NSComboBox: Как сообщить пользователю, что он ввел информацию, которой нет во всплывающем списке, и прочитать ее

#objective-c #macos #cocoa-bindings

#objective-c #macos #cocoa-привязки

Вопрос:

У меня есть NSComboBox с отдельным классом, который соответствует источнику данных NSComboBox и делегату.

Если пользователь вводит текст в поле со списком, который не соответствует ни одному из элементов во всплывающем списке, как мне получить уведомление о том, что пользователь что-то ввел, а также прочитать введенное пользователем значение?

На данный момент я внедряю методы делегирования:-

 -(void)comboBoxSelectionDidChange:(NSNotification *)notification 
-(void)comboBoxWillDismiss:(NSNotification *)notification 
  

Однако они отображаются только для получения уведомления, когда пользователь выбрал элемент из всплывающего окна, а не когда пользователь вводит что-то еще и прекращает редактирование

Ответ №1:

Поскольку NSComboBox это подкласс NSTextField , и, следовательно NSControl , вы также можете использовать NSControlTextEditingDelegate методы, такие как control:textShouldEndEditing: , чтобы повлиять на поведение вашего поля со списком.

Комментарии:

1. Спасибо, Джош, именно то, что я искал. Я думал о NSTextFieldDelegate, но не подумал заглянуть дальше назад.