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

时间:2018-05-29 08:34:20

标签: macos cocoa nssearchfield

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

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

在我设置如上所述的委托之前,搜索字段运行良好,没有任何问题。 一旦设置好,如果编辑和清除,我就无法退出。

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

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