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

4
我正在构建一款卡牌游戏(适用于tvOS),用户应该能够从牌桌上移除卡牌。在游戏结束时,可能只剩下几张卡牌,并且它们可以像下面图片中的按钮一样排列。
如何让用户从按钮1移动焦点到按钮0或2
在SO类似问题的未被接受的答案中,建议使用UIFocusGuide。我认为那个答案不适用于我的问题,因为在那种方法中,必须事先告诉focusGuidepreferredFocusedView (例如,在用户在Siri遥控器上滑动之前)。在我的情况下,首选的下一个焦点取决于滑动方向,例如focusHeading

enter image description here


可能是重复的问题:UIButton on different Y level can't be focused on tvOS - user4151918
1个回答

8

UIFocusGuide是处理这个问题的适用方法,并且可以在事先分配每个焦点指南一个preferredFocusedView,而不需要知道用户会移动哪个方向(基于哪个按钮具有初始焦点)。

例如,下面是您编辑后的示例的解决方案,说明了如何将焦点从聚焦的按钮1移动到按钮0或按钮2。

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

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

enter image description here

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

enter image description here

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


谢谢!它解决了问题,但解决方案有些繁琐。每次从板上移除卡片时,都必须用focusGuide对象替换它。如果我可以实现一个方法,从上一个focusView和focusHeading返回下一个focusView,那就太好了。如果在几天内没有这样的解决方案出现,我将把您的答案钉定为解决方案。再次感谢! - ragnarius
谢谢,这对我来说真的很有帮助。在两个小时后,我从你的回答中得到了帮助,所以再次感谢。 - vikas prajapati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接