2015-11-09 3 views
3

У меня есть NSComboBox с внешним datadource, и я использую метод:Как обрабатывать забой в NSComboBox

(NSString *)comboBox:(NSComboBox *)aComboBox completedString:(NSString *)string 

завершить строку с предложениями, все работает все в порядке, за исключением, когда я нажимаю забой, это не будет автозаполнения. Я попытался отлаживать, и он даже не вызывал этот метод в обратном пространстве. Я также пробовал называть это прямо из метода:

-(void)controlTextDidChange:(NSNotification *)notification 

но он не будет выбирать завершенную строку таким образом. Мой вопрос: что я делаю неправильно? Есть ли лучший способ справиться с удалением, или я должен просто попытаться выбрать готовый текст программно?

+0

Что такое предполагаемое поведение, когда пользователь нажимает клавишу удаления? – Aderstedt

+0

Хороший пример в Photoshop, когда вы выбираете шрифты: он должен удалять букву из управляющего текста, но делать предложение, которое следует выбрать, поэтому при вводе вы можете повторно выбрать выбранную (область с прикосом). –

+0

Вы уверены, что имеете в виду удаление и не backspace? – Aderstedt

ответ

1

Использование controlTextDidChange для обнаружения, когда был нажат забой, а затем вызвать завершение вручную с помощью complete на NSTextView:

-(void)controlTextDidChange:(NSNotification *)notification { 
    if (... /* backspace pressed */) { 
     NSTextField *textField = [[notification userInfo] objectForKey:@"NSFieldEditor"]; 
     [textField complete:self]; 
    } 
} 
+0

как сказать, если было нажато backspace? Я могу сохранить свое последнее значение, но не могу отличить его от вставки значения. – Klaas

 Смежные вопросы

  • Нет связанных вопросов^_^