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

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

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

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

你有没有任何想法保持关注NSTextField而不禁用NSOutlineView?

谢谢。


我找到了一个解决方案:

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

let range = textField.currentEditor()?.selectedRange

之后:

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

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

链接地址: http://www.djcxy.com/p/85261.html

上一篇: macOS NSTextfield looses focus when NSPopover open

下一篇: NSTextField gets focus but no text input cursor is visible