UIFocusGuide 不适用于 tvOS 中的 UICollectionView

UIFocusGuide doesn't work on UICollectionView in tvOS

基于此post: UICollectionViewCell to UIButton Focus in tvOS,我添加了一个 UIFocusGuide,因此当用户位于 collectionview 的右侧时,可以 select 左侧按钮上的按钮。

使用此代码:

focusGuide = UIFocusGuide();
focusGuide.preferredFocusedView = btClick
view.addLayoutGuide(focusGuide)
focusGuide.topAnchor.constraintEqualToAnchor(collectionView.topAnchor).active = true
focusGuide.bottomAnchor.constraintEqualToAnchor(btClick.bottomAnchor).active = true
focusGuide.leadingAnchor.constraintEqualToAnchor(collectionView.leadingAnchor).active = true
focusGuide.widthAnchor.constraintEqualToAnchor(collectionView.widthAnchor).active = true

在我的示例中,我添加了一个有用的 code,它由 Jack Cox 创建,显示了 'invisible' 布局指南,一切看起来都很好,因为布局从 collectionView 的顶部开始并在按钮的底部结束。

但它不起作用,如果用户位于 collectionView 的左侧,则按钮只能 selected,在此图像上,您只能从项目 1 转到按钮,项目 6.

我在github here上做了一个小例子,我不知道我做错了什么。

我已经弄明白了,错误是用 collectionView 的整个大小创建焦点,现在我已经在 collectionView 下方创建了一个焦点指南并设置了 preferredFocusedView到按钮。

使用此代码:

focusGuide = UIFocusGuide();
focusGuide.preferredFocusedView = btClick
view.addLayoutGuide(focusGuide)

//Modified the size of the UIFocusGuide
focusGuide.topAnchor.constraintEqualToAnchor(btClick.topAnchor).active = true   
focusGuide.rightAnchor.constraintEqualToAnchor(collectionView.rightAnchor).active = true
    
focusGuide.widthAnchor.constraintEqualToAnchor(btClick.widthAnchor, multiplier: 8).active = true
focusGuide.heightAnchor.constraintEqualToAnchor(btClick.heightAnchor).active = true

现在指南看起来像这样:

我刚刚提交了对 github 的更改,也许它对其他人有帮助。