如何使用 swift 5 处理 NSComboBox 中的退格键

How to handle backspace in NSComboBox with swift 5

我有带外部数据源的 NSComboBox,我正在使用方法:

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

用建议完成字符串,一切正常,除了当我按退格键时,它不会自动完成。我试过调试,它甚至没有在退格键上调用这个方法。我也试过直接从方法调用它:

-(void)controlTextDidChange:(NSNotification *)notification

但它不会select那样完成字符串。 我的问题是我做错了什么?有没有更好的方法来处理删除,或者我应该尝试 select 以编程方式完成文本?

使用 controlTextDidChange 检测何时按下退格键,然后使用 NSTextView 上的 complete 手动触发完成:

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