Как передать фокус через несколько подпредставлений в tvOS - PullRequest
0 голосов
/ 02 марта 2020

У меня есть AVPlayerViewController, воспроизводящий некоторые видео. Когда на пульте дистанционного управления обнаруживается событие, слой выходит сверху с классическими элементами управления c, такими как кнопка воспроизведения / паузы, вперед и назад 15 с и т. Д. c.

. Кроме того, некоторые внешние события могут вызывать Ошибка, которая будет отображать ErrorViewController поверх любых других слоев, которые могут быть на проигрывателе.

Например, рассмотрим иерархию:

AVPlayerViewController -> ControlsView -> ErrorViewOverlay -> ErrorViewController -> ExitButton

Где ErrorViewOverlay отображается в верхней части окна управления (кнопки воспроизведения / паузы и т. Д. c.) Или на проигрывателе, а ErrorViewController отображается с использованием AddChild и НЕ присутствует ().

  • Проблема : когда кнопка UIB воспроизведения / паузы из ControlsView в данный момент сфокусирована, и я отображаю ErrorControlsV C, фокус не изменится на кнопку выхода UIB автоматически.

  • То, что я пробовал :

    • Я перезаписываю предпочитаемыефокусные среды в ControlsView для установки моей кнопки воспроизведения / паузы в качестве предпочтительного фокуса, когда отображается это представление
    • То же самое для ExitButton в ErrorControlsV C
    • Я попытался вручную вызвать setNeedsFocusUpdate и updateFocusIfNeeded в ErrorControlsV C viewDidLoad для принудительного обновления фокуса на моем exitButton
  • Полученный результат : фокус остается на кнопке ControlsView и перемещается только на мой выход Кнопка, когда я вручную перемещаюсь с помощью пульта. Я знаю, что это будет работать с подарком (viewConteroller: animated: complete), но я должен иметь возможность вручную активировать фокус в любое время.

Есть идеи?

...