我正在使用 NSControlTextEditingDelegate 使用我生成的自定义建议自动完成在 NSSearchField 中输入的内容。
complete:
更改文本时将消息发送到字段编辑器。
现在我想微调自动完成的行为,让它完全像谷歌搜索文本字段在 Safari 中一样工作:
当在 NSTextField 中键入两个或多个单词(由空格分隔)时,传入的 NSRange 的位置在
control:textView:textView:completions:forPartialWordRange: indexOfSelectedItem:
最后一次键入的空格之后开始。这意味着,如果用户键入“San Fran”并且 Google API 返回“San Francisco”,则从自动完成列表 NSTextField 值中选择它会被“San San Francisco”替换。
一种可能的解决方法是重建包含完成的 NSArray 并仅返回实际建议的后缀,具体取决于 charRange.location。这看起来很糟糕(因为自动完成列表现在只显示完成字符串的一部分),所以我希望
NSTextField
在请求自动完成时忽略空格。从列表中选择自动完成,不发送默认的 NSSearchField 操作。目前用户需要选择一个自动完成,然后按回车触发搜索。