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

标签 macos swift5 nscombobox

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

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

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

-(void)controlTextDidChange:(NSNotification *)notification

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

最佳答案

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

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

关于macos - 如何使用 swift 5 处理 NSComboBox 中的退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609012/

相关文章:

macos - 在mac osx终端中如何发出stdin的EOF信号?

macos - 使用 Applescript 取消最小化应用程序

macos - 如何使用 Swift 4 Xcode 10 从 Cocoa 中的 Storyboard 以编程方式设置初始 Controller ?

ios - swift 5.1 : How can I pass NULL as an argument?

cocoa - 如何让填充的组合框在 Swift 中显示其选项?

python - 为什么 Python 2.7 命令行工具不位于 Mac OS X 上的 `/usr/local/bin` 中?

ios - 更新 MKMapRect 扩展的 Swift 语法

ios - 使用 iOS swift 代码访问 flutter assets

objective-c - setHidden :YES 时 NSComboBox Action 选择器触发

macos - 隐藏/禁用 NSComboBox 按钮