問題タブ [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 に答える
2449 参照

ios - ビューコントローラーにpreferredFocusViewを強制的に呼び出すにはどうすればよいですか?

したがって、次のメソッドを持つView Controllerがあります。

したがって、基本的に、値を設定することで、必要なビューにフォーカスを強制的に更新できviewToFocusます。これは、ほとんどの場合にうまく機能します。ただし、サブビューを削除すると、これは正しく機能しないようで、preferredFocusedView呼び出されません。

私のサブビューに関して言えば、これは画面を覆うオーバーレイであり (モーダルを使用しなかった理由は聞かないでください。それには理由がありました)、デリゲートとして親ビュー コントローラーを持っています。親View Controllerには次のメソッドがあります。

何らかの理由で、closedOverlay が呼び出され、focusedViewBeforeOverlay有効な非 nil ビューがある場合、オーバーレイがスーパービューから削除された後にフォーカスされる次のビューになることはありません。私が言ったようpreferredFocusedViewに、フォーカスは呼び出されることはなく、代わりに、フォーカス エンジンが次のフォーカスであるべきと判断したものにフォーカスします。

なぜそうなるのか誰でも知っていますか?サブビューを削除すると、フォーカスの更新をトリガーできなくなりますか?

したがって、順序、または少なくとも予想される順序は次のようになります。

  1. 何かOverlayViewがインスタンス化をトリガーします
  2. beforeOpeningOverlay()が呼び出され、現在フォーカスされているビューが に設定されfocusedViewBeforeOverlayます。オーバーレイが開かれ、フォーカスがキャプチャされます
  3. 何かがオーバーレイビューを閉じるようにトリガーし、呼び出しますclosedOverlay()
  4. viewToFocus = focusedViewBeforeOverlay行が呼び出されます
  5. 親ViewControllerに対してフォーカス更新を呼び出す必要があります。preferredFocusedView
  6. preferredFocusedViewviewToFocuswhich が設定されたものを返しfocusedViewBeforeOverlay、オーバーレイが開く前にフォーカスされていたビューにフォーカスを戻す必要があります。

問題は、ステップ 5 以降が呼び出されていないようです

0 投票する
1 に答える
683 参照

swift - データの更新中に UITableView の最初の行をフォーカスしたままにするにはどうすればよいですか?

UITableViewtvOS のデータのタイムラインを示す があります。を介して動的に更新されNSFetchedResultsControllerます。

テーブルが更新されると、新しいセルが上部に追加されます。ただし、以前に選択したセルはフォーカスされたままですが、必要な動作は、データの更新後にフォーカスが「最新」(つまり、一番上の) セルに移動することです。

どうすればこれを達成できますか?

0 投票する
3 に答える
1779 参照

uitableview - デフォルトの tvOS フォーカス アニメーションを無効にするにはどうすればよいですか?

UITableViewUITextField、およびいくつかのカスタムを組み合わせた UI を作成する必要がありUIView、カスタム フォーカス アニメーションも提供する必要があります。

UITableView/UITableViewCellを取得しUITextFieldて、デフォルトのフォーカス アニメーションをレンダリングしないようにするにはどうすればよいですか?

私は試した:

独自のアニメーションを追加できますが、ビューから「デフォルト」のアニメーションを削除できません。

0 投票する
1 に答える
342 参照

swift - ボタンは手の届かないところにあるため、フォーカスできません - tvOS Swift

tvOS ムービー ブラウザを作成しています。このビューは映画の説明を保持し、4 つのものを表示します: 映画のカバー画像、映画の説明テキスト、時計ボタン、および映画のキャストのコレクション ビュー (青いボックス)。preferredFocusView は、watchButton に設定されます。ただし、その下のコレクション ビューにフォーカスを切り替えると、キャストが短すぎると時計ボタンに再びフォーカスできなくなります。

キャストがボタンのすぐ下まで伸びているため、時計ボタンはここでフォーカス可能です

時計ボタンはここではフォーカスできません

最終的には、ウォッチ ボタンが最初のキャスト メンバーの真上にくるように UI を再配置することで修正できることはわかっていますが、私が目指していた元の外観を実現する実際の方法があるかどうかを知りたい.

ありがとう!