我正在尝试在我的macOS应用程序中进行搜索自动完成:
我有一个带有NSTextField的窗口。当值更改时,我显示包含NSOutlineView的NSPopover,并在用户键入文本时更新列表。 然后,用户可以在NSOutlineView中选择结果。
但是,如果我启用NSOutlineView以便能够单击结果,则NSTextField会在NSPopover打开时失去焦点。 如果我为NSOutlineView将isEnabled设置为false,则NSTextField会保持焦点,但我无法在列表中选择结果。
您是否有任何想法在不禁用NSOutlineView的情况下继续关注NSTextField?
谢谢。
答案 0 :(得分:0)
我找到了一个解决方案:
在NSPopover.show()之前,我存储了当前textField选择的范围:
let range = textField.currentEditor()?.selectedRange
之后:
textField.selectText(self)
textField.currentEditor()?.selectedRange = range ?? NSMakeRange(0, 0)
如果我在不设置所选范围的情况下调用selectText(),它将选择所有文本。 此外,保存所选范围保持光标位置。