当NSPopover打开时,macOS NSTextfield失去焦点

时间:2017-11-30 11:25:17

标签: macos focus nstextfield nsoutlineview nspopover

我正在尝试在我的macOS应用程序中进行搜索自动完成:

我有一个带有NSTextField的窗口。当值更改时,我显示包含NSOutlineView的NSPopover,并在用户键入文本时更新列表。 然后,用户可以在NSOutlineView中选择结果。

但是,如果我启用NSOutlineView以便能够单击结果,则NSTextField会在NSPopover打开时失去焦点。 如果我为NSOutlineView将isEnabled设置为false,则NSTextField会保持焦点,但我无法在列表中选择结果。

您是否有任何想法在不禁用NSOutlineView的情况下继续关注NSTextField?

谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:

在NSPopover.show()之前,我存储了当前textField选择的范围:

let range = textField.currentEditor()?.selectedRange

之后:

textField.selectText(self)
textField.currentEditor()?.selectedRange = range ?? NSMakeRange(0, 0)

如果我在不设置所选范围的情况下调用selectText(),它将选择所有文本。 此外,保存所选范围保持光标位置。

相关问题