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

时间:2015-12-25 12:38:15

标签: tvos focus-engine

我正在构建一个卡片游戏(用于tvos),用户应该能够从棋盘上移除卡片。 在游戏结束时,只有几张牌可以留在棋盘上,他们可能会在被安排为下图中的按钮。

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

在SO的类似问题的未接受的答案中,有人建议使用UIFocusGuide。我不认为答案适用于我的问题,因为在这种方法中,必须提前告知焦点指南preferredFocusedView(例如在用户在siri-remote中滑动之前)!在我的情况下,首选的下一个焦点取决于滑动方向,例如, focusHeading

a previous answer of mine

1 个答案:

答案 0 :(得分:8)

UIFocusGuide是处理此问题的适用方法,可以在知道用户移动方向之前为每个焦点指南分配preferredFocusedView(基于哪个按钮具有初始值)焦点)。

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

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

如果用户碰巧从按钮1向下或向右滑动,则焦点将移动到其中一个蓝色对焦指南中,按钮2将会聚焦。

enter image description here

当焦点发生变化时,您需要更新焦点指南以将焦点引回返回方向。例如,一旦按钮0获得焦点,您就会将绿色焦点指南的preferredFocusedView更新为首选按钮1,这样用户就可以从焦点按钮0向下或向右移动,最后返回按钮1。

enter image description here

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