提问人:Aaron 提问时间:6/6/2017 更新时间:7/1/2019 访问量:443
如何指导曲面 SKNodes 的 tvOS 焦点项目
How to guide tvOS focus items for curved SKNodes
问:
我的 Apple tvOS App 使用 SKNodes 生成一个游戏板,如下所示:
每个形状,用线条分隔,都是一个可聚焦的SKNode(例如,每个彩色楔形由5个SKNode组成,这些SKNode的大小逐渐减小,靠近中心)。
我的问题是焦点引擎没有聚焦下一个焦点项 (SKNode),这感觉就像是合乎逻辑的、最自然的下一个焦点节点。这个问题是因为焦点引擎逻辑是矩形的,而我的 SKNodes 是弯曲的。如下图所示,当从最外层的黄色 SKNode 向下滑动时,试图找出下一个可聚焦的项目时,存在固有的问题:
在上面的示例中,焦点引擎根据节点的边缘推断当前聚焦区域是红色阴影矩形内的区域。由于此逻辑,聚焦矩形与不属于当前聚焦节点的区域重叠,包括第二个黄色 SKNode 的整个宽度。因此,当向下滑动时,对焦引擎会将焦点跳过到第三个(中间)黄色 SKNode。
如何解决这个焦点问题,以便我的 SKNodes 圆形游戏板在垂直和水平方向上都更加自然,而不会显得那么零星?这可能吗?也许使用 UIFocusGuides?
答:
0赞
Ajinkya
6/30/2019
#1
您必须手动处理焦点。使用下面列出的方法检查上下文中的下一个焦点视图。
func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool
在此方法中,您将获得焦点朝向方向 (UIFocusHeading)。截获所需的方向,并将所需的下一个焦点视图保存在某个属性中。通过调用以下方法手动更新焦点
setNeedsFocusUpdate()
updateFocusIfNeeded()
这将触发以下
preferredFocusEnvironments: [UIFocusEnvironment] { get }
在此检查已保存的实例,并返回相同的实例。这将帮助您根据自己的要求手动处理焦点。
评论