Umgang mit Ersthelfern und NSPopover

Ich versuche, das Verhalten des Suchfelds in iTunes zu replizieren, um nach Börsensymbolen und -namen zu suchen. Insbesondere wird beim Eingeben in das Suchfeld ein Popover mit den gefilterten Elementen angezeigt. Meistens funktioniert dies, aber was ich nicht replizieren kann, ist die Art und Weise, wie der Ersthelfer behandelt wird

Ich habe mein Popover angezeigt, nachdem drei Zeichen eingegeben wurden. Zu diesem Zeitpunkt würde das NSSearchField den Ersthelferstatus verlieren und ich könnte nicht mehr weiter tippen. Das Verhalten, das ich möchte, ist die Möglichkeit, die Eingabe fortzusetzen, nachdem das Popover angezeigt wird, wenn Sie mit den Pfeiltasten durch die Elemente scrollen und dann die Eingabe fortsetzen, um mit dem letzten Zeichen im Suchfeld fortzufahren.

Ich habe versucht, NSTextView in Unterklassen zu unterteilen (verwenden Sie dies als benutzerdefinierten Feldeditor für NSSearchField) und zu überschreiben

- (BOOL)resignFirstResponder 

Wenn Sie einfach NEIN zurückgeben, kann ich die Eingabe fortsetzen, sobald das Popover angezeigt wird. Natürlich kann ich jedoch keine Elemente im Popover auswählen. Also habe ich Folgendes versucht, was JA zurückgibt, wenn der Abwärtspfeil oder ein Maus-Down-Ereignis auftritt.

@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];
}

Dies funktioniert für das Maus-Down-Ereignis, aber nicht für das Keydown-Ereignis. Außerdem wird das Problem dadurch nicht behoben, wenn der Benutzer die Eingabe fortsetzt.

Irgendwelche Vorschläge?