tvos 如何让用户更自由地移动焦点?

tvos How to let the user move focus more freely?

我正在构建一个纸牌游戏(用于 tvos),用户应该可以在其中从棋盘上移除纸牌。 在游戏结束时,棋盘上可能只剩下几张牌,例如,它们可能是如下图按钮排列。

如何让用户将焦点从按钮 1 移动到 按钮 0 或 2?

un-accepted 对 SO 类似问题的回答中,有人建议应该使用 UIFocusGuide。我认为这个答案不适用于我的问题,因为在那种方法中,必须提前告诉 focusGuide preferredFocusedView(例如,在用户在 siri-remote 中滑动之前)!在我的例子中,首选的下一个焦点取决于滑动方向,例如focusHeading.

UIFocusGuide 是处理此问题的适用方法,可以在知道用户将移动哪个方向(基于哪个按钮具有初始焦点)。

例如,这里是您编辑的示例的解决方案,展示了如何将焦点从焦点按钮 1 移动到按钮 0 或按钮 2。

如果用户向上或向左滑动,焦点将移动到绿色焦点引导之一,这会将首选焦点视图更改为按钮 0。

如果用户碰巧从按钮 1 向下或向右滑动,焦点将移动到蓝色焦点引导之一,按钮 2 将成为焦点。

随着焦点的变化,您更新焦点指南以将焦点引导回 return 方向。例如,一旦按钮 0 获得焦点,您将更新 preferredFocusedView 以让绿色焦点指南更喜欢按钮 1,这样用户就可以从焦点按钮 0 向下或向右移动并最终回到按钮 1。

请记住,如果焦点引擎无法确定下一个视图,您只需要一个焦点指南。您应该测试不同的场景以确定何时真正需要指南。