Wie kann ich Berührungen mit tvOS mit dem Simulator erhalten? Wir brauchen Touch-Position. UIPress - haben Sie es nicht!
%Vor%Die Drucktasten sind mit physischen Tasten wie der Menü-Taste verbunden. Ein Druck beginnt, wenn Sie einen solchen Knopf gedrückt halten, und er endet, wenn Sie aufhören, den Knopf gedrückt zu halten. Mit einer Presse ist keine bildschirmbezogene Position verbunden.
Touches in tvOS ähneln Touches in iOS, aber es gibt einen wichtigen Unterschied: Sie sind "indirekte" Berührungen, dh es gibt keine physische Beziehung zwischen der Position des Fingers und einem Ort auf dem Bildschirm.
>Wenn eine Berührung beginnt, wird sie an die fokussierte Ansicht übergeben, und es wird davon ausgegangen, dass die Berührung in der Mitte dieser Ansicht begonnen hat, unabhängig von der absoluten Position des Fingers auf der Berührungsoberfläche. Wenn sich die Berührung bewegt, wird ihre bildschirmbezogene Position entsprechend aktualisiert.
Ich kenne keine API, mit der Sie die absolute Position eines Fingers auf der Touch-Oberfläche bestimmen können.
In Ihrem Fall sollte der Responder die fokussierte Ansicht veranlassen, dass er Berührungsereignisse erhält.
Ich denke, es sollte pressesBegan statt touchedBegan sein.
%Vor%Denken Sie daran, dass tvOS nicht den Begriff "berühren" hat wie beim Berühren des Bildschirms.
Die offizielle Methode zur Handhabung von "taps" ist die Verwendung von UITapGestureRecognizer. Und das wäre, wenn der Benutzer auf die Fernbedienung klickt / klickt, wenn sich ein Objekt im Fokus befindet.
So mache ich es mit einem UICollectionView:
%Vor%Sie können die Position des Tap aus dem UITapGestureRecognizer entnehmen, die in der Handler-Funktion übergeben wird.
Siehe auch dieses Tutorial auf Apple TV: Ссылка
Eine einfache Möglichkeit, das zu tun:
%Vor%Schauen Sie in mein Repository: Ссылка
Tags und Links objective-c tvos