插入文本并清除后无法退出 NSSearchField

Can't exit NSSearchField after inserted text and cleared it

我在我的 NSViewController 中添加了一个 NSSearchField,它是我的大纲视图的主控制器。现在它实现了下一个 类:

class MainCatalogNSViewController: NSViewController, NSOutlineViewDelegate, NSOutlineViewDataSource, NSSearchFieldDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        searchField.delegate = self
    }
}

搜索字段运行良好,没有任何问题,直到我像上面那样设置委托。 设置后,如果被编辑和清除,我将无法退出。

你能解释一下为什么会这样吗?这个问题可能与大纲视图有关吗?我以前使用过 NSSearchField,它一直运行良好。

问题的根源是在 NSViewController 中声明的下一个方法,它阻止保存大纲视图中的空单元格:

func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
    // don't allow empty node names
    return !(fieldEditor.string.isEmpty ?? true)
}

现在在这种情况下它处理 NSSearchField 事件,而不是大纲视图 table 单元格编辑。