首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指导弯曲SKNodes的tvOS焦点项目

如何指导弯曲SKNodes的tvOS焦点项目
EN

Stack Overflow用户
提问于 2017-06-06 13:49:08
回答 1查看 341关注 0票数 18

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

由线条分隔的每个形状都是一个可聚焦的SKNode (例如,每个彩色楔形由5个SKNodes组成,这些楔形的大小逐渐减小,接近中心)。

我的问题是,焦点引擎不会关注下一个焦点项目(SKNode),因为它看起来像是逻辑上最自然的下一个要关注的节点。这个问题是因为焦点引擎逻辑是矩形的,而我的SKNodes是曲线的。正如你在下面看到的,当从最外面的黄色SKNode向下滑动时,试图找出下一个可聚焦的项目时存在固有的问题:

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

如何才能解决这个焦点问题,让我的SKNodes圆形游戏板在垂直和水平方向上的焦点都更自然,而不会显得如此零星?这个是可能的吗?也许和UIFocusGuides一起?

EN

回答 1

Stack Overflow用户

发布于 2019-06-30 22:05:49

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

代码语言:javascript
复制
func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool

在此方法中,您将获得焦点方向(UIFocusHeading)。截取所需的方向,并将所需的下一个焦点视图保存在某些属性中。通过调用以下方法手动更新焦点

代码语言:javascript
复制
setNeedsFocusUpdate()

updateFocusIfNeeded()

这将触发下面的

代码语言:javascript
复制
preferredFocusEnvironments: [UIFocusEnvironment] { get }

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44382223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档