Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Can';t在插入文本并清除后退出NSSearchField_Macos_Cocoa_Nssearchfield - Fatal编程技术网

Macos Can';t在插入文本并清除后退出NSSearchField

Macos Can';t在插入文本并清除后退出NSSearchField,macos,cocoa,nssearchfield,Macos,Cocoa,Nssearchfield,我在我的NSViewController中添加了一个NSSearchField,它是我的大纲视图的主控制器。现在它实现了以下类: class MainCatalogNSViewController: NSViewController, NSOutlineViewDelegate, NSOutlineViewDataSource, NSSearchFieldDelegate { override func viewDidLoad() { super.viewDidLoad(

我在我的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
事件,而不是大纲视图表格单元格编辑。

您是否实现了
NSSearchFieldDelegate
方法?@Willeke否,我只添加了
NSSearchFieldDelegate
并为搜索字段分配了一个委托。这很奇怪,我在下一个大纲视图中有相同的
NSSearchField
,但它是一个
NSTableView
而不是
NSOutlineView
。搜索字段是如何工作的,它是否连接到操作方法?您是否实现了任何
NSTextFieldDelegate
NSControlTextEditingDelegate
方法?@Willeke,看来我找到了问题的根源。我声明了可选的
control(){}
方法,该方法防止在outline视图中提交空项。现在我需要弄清楚如何区分NSTableCell和NSSearchFIeld输入。