gpt4 book ai didi

swift - 如何为弯曲的 SKNodes 引导 tvOS 焦点项目

转载 作者:IT王子 更新时间:2023-10-29 05:22:01 25 4
gpt4 key购买 nike

我的 tvOS 应用程序使用如下所示的 SKNodes 生成游戏板:

enter image description here

每个形状由线分隔,是一个可聚焦的 SKNode(例如,每个彩色楔形由 5 个 SKNode 组成,它们的大小逐渐靠近中心)。

我的问题是焦点引擎没有关注下一个焦点项 (SKNode),而下一个焦点项 (SKNode) 感觉像是合乎逻辑的、最自然的下一个要关注的节点。这个问题是因为焦点引擎逻辑是矩形的,而我的 SKNodes 是弯曲的。正如您在下面看到的,当从最外面的黄色 SKNode 向下滑动时试图找出下一个可聚焦项目时存在固有问题:

enter image description here

在上面的例子中,焦点引擎根据节点的边缘推断出当前焦点区域是红色阴影矩形内的区域。由于这种逻辑,聚焦矩形与不属于当前聚焦节点的区域重叠,包括第二个黄色 SKNode 的整个宽度。因此,向下滑动时,焦点引擎会将焦点跳到第三个(中间)黄色 SKNode。

如何解决这个焦点问题,使我的 SKNodes 圆形游戏板在垂直和水平方向上的焦点都更加自然,而不是看起来那么零星?这可能吗?也许使用 UIFocusGuides?

最佳答案

您必须手动处理焦点。使用下面列出的方法从上下文中检查下一个焦点 View 。

func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool

在这个方法中,你会得到焦点的航向方向(UIFocusHeading)。拦截所需的方向并将所需的下一个聚焦 View 保存在某个属性中。通过调用以下方法手动更新焦点

setNeedsFocusUpdate()

updateFocusIfNeeded()

这会触发下面的

preferredFocusEnvironments: [UIFocusEnvironment] { get }

在此检查已保存的实例,并返回相同的实例。这将帮助您根据需要手动处理焦点。

关于swift - 如何为弯曲的 SKNodes 引导 tvOS 焦点项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44382223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com