En tu app de Apple TV, el usuario reporta que al navegar con el Siri Remote el foco "salta" a elementos inesperados o se queda atascado. ¿Cómo lo resuelves?
Contexto
Pantalla con carruseles horizontales anidados dentro de un scroll vertical y algunos elementos superpuestos. El foco no sigue el orden visual que el usuario espera y en una sección no puede salir.
Respuesta modelo
En tvOS todo gira en torno al focus engine, que mueve el foco según la geometría de las vistas enfocables. 1) Entender que el motor elige el siguiente elemento por proximidad direccional, no por orden de código. 2) Asegurar que solo sean enfocables las vistas que deben serlo (canBecomeFocused) y evitar solapamientos que confunden al motor. 3) Usar focusGuides (UIFocusGuide) para redirigir el foco donde no hay una vista enfocable en línea recta, resolviendo el "atasco". 4) En SwiftUI, apoyarse en @FocusState y focusSection para agrupar. 5) Nunca forzar el foco de forma imperativa salvo casos justificados; se trabaja con el motor, no contra él. 6) Probar toda la navegación solo con el control remoto, no con clics.
Claves
- El focus engine elige por proximidad direccional, no por orden de código.
- Los focus guides redirigen el foco donde no hay vista en línea recta.
- Se trabaja con el motor; forzar el foco es el último recurso.