Фокус на начальном элементе в представлении коллекции в Catalyst на macOS

У меня есть приложение Catalyst, работающее на macOS, где мне нужно выбрать и сфокусировать первый элемент в представлении коллекции. По умолчанию программно выбранный элемент только выбран, но не сфокусирован. Чтобы продемонстрировать, что я имею в виду, вот приложение при запуске ...

введите описание изображения здесь

А вот и приложение после того, как я вручную выберу первый элемент с помощью мыши или клавиатуры ...

введите описание изображения здесь

Насколько я понимаю, Catalyst использует Focus Engine из tvOS для управления фокусом, и поэтому применение тех же концепций здесь должно привести к тому же результату. Однако мне не повезло, что это сработало.

Вещи, которые я пробовал ...

  • Переопределение preferredFocusEnvironments в контроллере представления и возврат представления коллекции, а также реализация indexPathForPreferredFocusedView(in:) в делегате представления коллекции. Это работает настолько, насколько вызываются оба метода, но не влияет на результат.
  • Переопределение preferredFocusEnvironments и возврат текущей выбранной ячейки из представления коллекции.
  • Переопределение preferredFocusEnvironments и возврат ячейки с жестко заданным IndexPath(item: 0, section: 0) в соответствии с статья о ранчо Big Nerd Ranch.

К сожалению, ни один из этих подходов не дает желаемого результата, заключающегося в фокусировке на выбранном элементе. Кто-нибудь может посоветовать, как этого добиться?


person Community    schedule 05.07.2020    source источник


Ответы (1)


Попробуйте использовать статьFirstResponder ().

person BB9z    schedule 15.04.2021