У меня есть 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
, но не изменяет принцип работы элементов управления.
Почему так происходит? Могу ли я хотя бы частично отключить это поведение для табличного представления приложения?