2016-10-05 1 views
0

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

Мой интерфейс:

@interface PaddedTextView : NSTextView <NSTextViewDelegate> 

я реализую:

- (BOOL)textView:(NSTextView *)textView doCommandBySelector (SEL)commandSelector 
    { 

Но это никогда не называют.

Список завершения исчезает, когда я нажимаю кнопку ввода после выбора опции.

Я также реализованы:

- (void)keyDown:(NSEvent *)event 

и он обнаружит буквенно-цифровые ключевые события, но не ввести ключ.

Я также реализовал flagsChanged, чтобы захватить клавишу shift, и это работает.

Я использую пользовательский NSTextField, NSTextFieldCell и NSTextView.

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

Любая помощь оценивается. Спасибо

ответ

-1

Я не уверен в реализации списка завершений, но по крайней мере на нормальном NSTextView при нажатии клавиши будет вызываться insertNewline:(id)sender.

+0

Спасибо за ваш ответ, я думаю, что моя проблема в том, что я хочу захватить ключ ввода в списке завершений, а не сам NSTextView. Но я не знаю, какой класс. Я называю complete: nil, и список всплывает. Я думаю, что TextView получает ключевые события из этого списка, но он обрабатывает ключ ввода на своем собственном. – jon34560

0

Я нашел решение моей проблемы. (Update: Это не работает)

Я добавил следующее моей реализации NSTextView:

-(void) insertCompletion:(NSString *)word forPartialWordRange:(NSRange)charRange movement:(NSInteger)movement isFinal:(BOOL)flag { 
    if(movement == NSReturnTextMovement){ 
     NSLog(@"Enter key pressed..."); 
    } 
    [super insertCompletion:word forPartialWordRange:charRange movement:movement isFinal:flag]; 
} 

Update: На самом деле это не всегда работает. Эта функция вызывается только при выборе опции завершения. Если вы введете текстовое поле и нажмите enter, я не могу обнаружить это ключевое событие, он отклоняет список завершения только. Все еще ищет реальное решение.

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