私はセクション付き標準UICollectionView
を使用します。私の細胞はグリッドのように配置されています。ユーザーがApple TVリモコンを使用してフォーカスを移動すると、選択した方向の次のセルが正しくフォーカスされます。しかし、グリッドに「ギャップ」がある場合、デフォルトフォーカスエンジンはセクションを飛び越えます。それは、いくつかのセクションになる可能性があるが同じ列にあるセルに焦点を当てるためにこれを行います。UICollectionViewのカスタムフォーカスエンジンの動作
簡易例: 3つのセクションがあります。最初のセクションには3つのセルがあります。 2番目のセルは2つのセルを持ち、最後のセルは3つのセルを持ちます。緑色セルがフォーカスされ、ユーザが下方向に触れ、黄色セルがフォーカス取得し、セクション2、フォーカスエンジンによってスキップされた場合
次の画像を参照してください。
セクションを飛び越さないように強制したいと思います。だから黄色のセルに焦点を当てるのではなく、青いセルに焦点を合わせたいと思います。
Apple TV Focusエンジンは、内部的にグリッドシステムのように動作し、記述された動作がデフォルトの動作であることを知りました。他の動き(例えば、対角線)を可能にするために、フォーカスエンジンをpreferredFocusedView
にリダイレクトすることができる不可視のUIFocusGuide
を配置することによって、フォーカスエンジンを助ける必要があります。
次の画像では、UICollectionView
セクションの空きスペースに1つの目に見えない赤のフォーカスガイドが配置されています。このガイドは、下向きのフォーカスを目的の青色のセルにリダイレクトします。私はそれが理論の中で完璧な解決策になると思う。
しかし、どのように、私はUICollectionView
セクションのすべての空のスペースにUIFocusGuide
秒を追加しますか?私はいくつかのことを試みたが、何も働かなかった。たぶんそれをデコレータビューとして追加するのは間違っているようです。または、追加のセルとして、しかしそれはデータレイヤーを壊し、制約アンカーは機能しません。
UICollectionView
にUIFocusGuide
を追加する方法はありますか?
同じ問題を見つけることができます。 collectionView:canFocusItemAtIndexPathをオーバーライドして、黄色のセルにfalseを返しましたか? –
いいえ私はしていません。しかし、私は少し混乱を引き起こす可能性がある、細胞が焦点を当てる必要があります原因だと思います。私はまだ 'UIFocusGuide'技術を好む。しかし、それを達成する方法はまだ分かりません。私はアップルのフォーラムでも尋ねました:https://forums.developer.apple.com/message/93020 あなたが解決策を見つけたらお知らせください。 –