【问题标题】:How to handle backspace in NSComboBox with swift 5如何使用 swift 5 处理 NSComboBox 中的退格键
【发布时间】:2016-02-10 02:12:49
【问题描述】:

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

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

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

-(void)controlTextDidChange:(NSNotification *)notification

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

【问题讨论】:

  • 当用户按下删除键时你的预期行为是什么?
  • 在 Photoshop 中选择字体时是一个很好的例子:它应该从控制文本中删除字母,但提出应该选择的建议,因此当您键入时,您可以通过选定的区域重新输入(建议区域))
  • 你确定你的意思是删除而不是退格吗?
  • 哦,对不起,退格,我会编辑有问题的...

标签: macos swift5 nscombobox


【解决方案1】:

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

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

【讨论】:

  • 如何判断是否按下了退格键?我可以存储自己的最新值,但无法与粘贴值区分开来。
猜你喜欢
  • 2020-06-11
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多