Das ist also eine Art Noobish-Frage, aber ich kann einfach keine sehr einfache Möglichkeit finden, die indexPath
des aktuell fokussierten Items zu finden.
Ich schaute mich um und hoffte, etwas sehr einfaches zu sehen, wie collectionView.indexPathOfCurrentlyFocusedItem
, fand aber nichts in der Nähe.
Also habe ich gegraben und versucht, etwas Ähnliches in UIFocusEnvironment
, UIFocusUpdateContext
zu finden, das versucht, die gewünschte Eigenschaft zu finden, aber gescheitert.
Also, die einzige Lösung, die ich finden kann, besteht darin, alle sichtbaren Zellen zu durchlaufen und eine Zelle zu finden, deren fokussierte Eigenschaft auf true gesetzt ist.
Gibt es also eine einfachere und elegantere Möglichkeit, den indexPath
des aktuell fokussierten Gegenstands zu finden? (Außer, dass es über die Delegate-Methode verfolgt und in der Eigenschaft des View-Controllers gespeichert wird)
Verwenden Sie didUpdateFocusInContect - UICollectionViewDelegate
%Vor%Dies wird den IndexPfad der Zelle zurückgeben, die fokussiert werden soll. Sie können auch versuchen:
%Vor%Hängt davon ab, was Sie tun möchten.
Also, dein Ziel ist es, etwas zu tun, wenn du den Fokus auf eine Zelle unter tVOS verlierst und verlierst. Der Catch ist, dass Sie sich um andere UI-Elemente bewegen, und daher könnte der Kontext anders sein. Sie müssen in diesem Zusammenhang nur diejenigen UIs ändern, die Sie pflegen müssen.
Der richtige Ort für Ihre Implementierung ist func didUpdateFocusInContext (), wie folgt:
%Vor%Jetzt verwenden wir den Fokuskoordinator, um unsere Logik anzuwenden:
Wie Sie sehen, bietet didUpdateFocusInContext () einen generischen Ansatz für alle Ansichten in Ihrem aktuellen visuellen Kontext. Sie können den gleichen Ansatz für andere Benutzeroberflächenelemente anwenden.
Viel Spaß mit tvOS ...
Tags und Links uicollectionview tvos