Включение "Использовать навигацию с клавиатуры" беспорядок с NSTableView - PullRequest
1 голос
/ 27 мая 2020

У меня есть 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, но не изменяет принцип работы элементов управления.

Почему так происходит? Могу ли я хотя бы частично отключить это поведение для табличного представления приложения?

1 Ответ

1 голос
/ 28 мая 2020

После того, как я почти потерял последние волосы, вот что решает его

  • Убедитесь, что для всех ваших подвидов ячеек refusesFirstResponder установлено на false

Теперь таблица просмотров статус первого респондента не теряется.

...