问题标签 [focus-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
901 浏览

ios - 如何在 tvOS 应用程序中为 collectionview 的部分标题设置动画?

在此处输入图像描述当标题下方的集合单元格获得焦点时,需要为部分标题标题设置动画。就像您在 Apple tv 上访问“电影 itunes”应用程序并转到顶部电影选项卡一样,如果您查看下面的播放列表,当您滚动浏览项目时,标题会上下动画以不与焦点单元格重叠。任何帮助表示赞赏tvos 屏幕截图链接

0 投票
2 回答
500 浏览

ios - selectedViewcontroller 不适用于 tvOS 10 中的 tabbarcontroller

我有一个rootviewcontroller正在扩展的UITabBarController. 它有几个孩子viewcontrollers

我想要的只是以编程方式viewcontroller从第一个中选择第二个/第三个/..。我用过

以及这个主题的所有变体。我在使用时注意到以下内容

显示tabBarController2ndviewcontroller一秒钟,但又回到 1st viewcontroller。我有一种预感,这是焦点引擎,但我现在迷路了。

0 投票
1 回答
2449 浏览

ios - 你如何强制视图控制器调用preferredFocusView?

所以我有一个具有以下方法的视图控制器:

所以基本上我可以通过设置一个值来强制对我想要的视图进行焦点更新viewToFocus,这在大多数情况下都很好用。但是,在删除子视图时,这似乎无法正常工作并且preferredFocusedView永远不会被调用。

就我的子视图而言,它是一个覆盖屏幕的覆盖层(不要问我为什么不使用模式,这是有原因的),并且将父视图控制器作为委托。父视图控制器有以下方法:

由于某种原因,当调用 closedOverlay 并且focusedViewBeforeOverlay具有有效的非零视图时,它永远不会是从父视图中删除覆盖后关注的下一个视图。就像我说preferredFocusedView的永远不会调用,而是专注于焦点引擎决定的下一个焦点。

有谁知道为什么会这样?删除子视图是否不允许您触发焦点更新?

所以顺序,或者至少是预期的顺序,应该是:

  1. 触发OverlayView要实例化的东西
  2. beforeOpeningOverlay()被调用,当前焦点视图设置为focusedViewBeforeOverlay. 然后打开覆盖并捕获焦点
  3. 有些东西会触发覆盖视图关闭,调用closedOverlay()
  4. viewToFocus = focusedViewBeforeOverlay线被称为
  5. 应该为父视图控制器调用焦点更新,调用它的preferredFocusedView
  6. preferredFocusedView应该返回viewToFocus设置为focusedViewBeforeOverlay并将焦点恢复到覆盖打开之前聚焦的视图

问题似乎是没有调用第 5 步及以后的步骤

0 投票
1 回答
683 浏览

swift - 如何在数据更新期间保持 UITableView 的第一行集中?

我有一个UITableView在 tvOS 上显示数据时间表的文件。它通过NSFetchedResultsController.

更新表格时,顶部会添加新单元格。但是:先前选择的单元格仍然保持焦点,但我需要的行为是在数据更新后焦点转移到“最新”(即最顶层)单元格。

我怎样才能做到这一点?

0 投票
3 回答
1779 浏览

uitableview - 如何禁用默认的 tvOS 焦点动画?

我需要创建一个混合了 , 和一些自定义的 UI,UITableViewUITextFieldUIView需要提供自定义焦点动画。

如何获取UITableView/UITableViewCell并且UITextField不呈现默认焦点动画?

我试过了:

我可以添加自己的动画,但无法摆脱视图中的“默认”动画。

0 投票
1 回答
342 浏览

swift - 按钮不可聚焦,因为它遥不可及 - tvOS Swift

我正在创建一个 tvOS 电影浏览器。此视图包含电影描述并显示 4 个内容:电影封面图像、电影描述文本、观看按钮和电影演员的集合视图(蓝色框)。PreferredFocusView 设置为 watchButton。但是,一旦我将焦点切换到它下方的集合视图,如果演员表太短,我将无法再次关注手表按钮。

观看按钮在这里是可聚焦的,因为演员表延伸到按钮下方

手表按钮在这里不可聚焦

最终,我知道我可以通过重新排列 UI 来修复它,使手表按钮直接位于第一个演员的上方,但我想知道是否有一种实际的方法来实现我想要的原始外观。

谢谢!

0 投票
1 回答
805 浏览

swift - AppleTV 在 TableView 中聚焦 CollectionView 元素

我正在为具有 UITableView 的 AppleTV 构建一个应用程序。我为它制作了一个自定义单元格,它有一个 UILabel 和一个 UICollectionView。有没有办法使集合视图的标签和元素都具有焦点?我尝试让表视图的 canFocusRowAt 和集合视图的 canFocusItemAt 都返回 true,但它不起作用。有任何想法吗?

0 投票
1 回答
1360 浏览

swift - 子视图中的 tvOS 焦点按钮

我正在使用 AVPlayerController,并且在 AVPlayerController 之上添加了一个子视图。一旦显示子视图,我想将焦点从播放器转移到子视图,并将焦点放在添加在该 Subivew 之上的 UIButton。我已经尝试过 preferredfocusview,但它是一个只读属性,我无法更改它。任何人都可以提供帮助。非常感谢。

0 投票
2 回答
1027 浏览

ios - tvos 如何始终关注特定的 tableViewCell

我已经创建了 tvOs 应用程序并坚持使用焦点引擎。

我有tableview,并设置为remembersLastFocusedIndexPathtrue。我必须覆盖indexPathForPreferredFocusedView. 当我第一次集中注意力时,indexPathForPreferredFocusedView被叫到,我让细胞集中,我需要什么。但在其他时候,我得到最后一个重点索引路径。当我定义remembersLastFocusedIndexPath为假时,indexPathForPreferredFocusedView不会被调用。

我需要做什么,只关注细胞,我需要什么?

0 投票
2 回答
413 浏览

tvos - 自定义子类collectionview - 调用preferredFocusEnvironments,但视图不聚焦

我正在尝试为自定义集合视图实现“remembersLastFocusedIndexPath”。苹果文档说:

“如果您将 UICollectionView 子类化,您还可以通过覆盖由 UIFocusEnvironment 协议定义并被所有视图采用的 preferredFocusEnvironments 属性来实现相同的行为。”

调用了preferredFocusEnvironments,但是当我在“didUpdateFocus”中检查“context.nextFocusedItem”时,它是一个不同的单元格并且焦点随机跳转。有人知道,哪里可能有问题?我想不明白。