Как бороться с первым респондентом и NSPopover

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

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

Я попытался создать подкласс NSTextView (используйте его как редактор пользовательских полей для NSSearchField) и переопределить

- (BOOL)resignFirstResponder 

Просто вернув NO, я могу продолжить ввод после появления всплывающего окна, но, очевидно, я не могу выбрать ни один из элементов во всплывающем окне. Поэтому я попробовал следующее, которое возвращает ДА, если происходит стрелка вниз или событие mousedown.

@interface SBCustomFieldEditor ()
{
    BOOL resignFirstRepond;
}
@end

@implementation SBCustomFieldEditor

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
        resignFirstRepond = NO;
    }
    return self;
}

- (BOOL)resignFirstResponder
{
    return resignFirstRepond;
}

- (void)keyDown:(NSEvent *)theEvent
{
    if ([theEvent keyCode] == 125) {
        resignFirstRepond = YES;
        [self resignFirstResponder];
    }
    [super keyDown:theEvent];
}

- (void)mouseDown:(NSEvent *)theEvent
{
    resignFirstRepond = YES;
    [self resignFirstResponder];
}

Это работает для события mousedown, но не для события keydown, более того, это не решает проблему, когда пользователь возобновляет набор текста.

Какие-либо предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос