我有NSTableView
,我在其中使用
tableView(tableView:shouldTypeSelectFor:withCurrentSearch:) -> Bool
使用这样的SPACE
键委托选择某些行的方法
func tableView(_ tableView: NSTableView,
shouldTypeSelectFor event: NSEvent,
withCurrentSearch searchString: String?) -> Bool {
if event.charactersIgnoringModifiers == " " {
// Perform action on currently selected row(s)
}
return false
}
这很好,但是当设置为
Preferences > Keyboard > Shortcuts > "Use keyboard navigation to move focus between controls"
启用后,按SPACE
键后,表格视图完全失去焦点。如果之后检查响应者链,则可以确定焦点移回到了窗口。
打开此设置的另一个副作用是,如果我在所选表格视图单元格中具有一个复选框(NSButton
),则在单击SPACE
时将自动调用其动作。
该设置明确指出它仅将焦点移到TAB
和SHIFT+TAB
上,而不改变控件的工作方式。
为什么会这样?我可以至少部分禁用应用程序的表视图的此行为吗?
refusesFirstResponder
设置为false