2016-02-29 23 views
7

Ich arbeite an einem Spiel in Objective-C. Die Siri-Fernbedienung funktioniert großartig über GCMicroGamepad und echte MFi-Controller funktionieren gut über GCGamepad. IR-Fernbedienungen von Drittanbietern funktionieren jedoch überhaupt nicht im Spiel (und auch nicht die Remote-App auf dem iPhone oder eine ältere Fernbedienung von Apple TV 3rd Gen). Wie kann ich erkennen und unterscheiden diese Eingänge?tvOS - Spiel Kontrolle über nicht-Siri Fernbedienung


Zwei Tage später ... ich gefunden habe, dass ein UITapGestureRecognizer zu erkennen Up verwendet werden kann, unten, links, rechts und wählen Ereignisse richtig, wenn sie mit einer Dritt TV-Fernbedienung oder iPhone Remote.app präsentiert. Die Richtungsereignisse sind für diese Art von Fernbedienungen auch tatsächlich einzigartig - die Siri-Fernbedienung erzeugt keine Richtungs-Tippereignisse. Wenn Sie jedoch auf der Siri-Fernbedienung oder der Drittanbieter- oder iPhone-Fernbedienung auf die Auswahltaste tippen, wird ein Select-Ereignis aus meiner Tap-Erkennung generiert. Ich brauche einen Weg, um die beiden zu unterscheiden.

Das einzige Unterscheidungsmerkmal ich finden kann, ist, dass der Siri Fern Klopfen auch erzeugt einen Button-A Druck auf der GCMicroGamepad-a Dritt Fernbedienung oder iPhone Remote.app beeinflusst nicht die GCMicroGamepad überhaupt. Es ist jedoch sehr unelegant zu versuchen, das GCMicroGamepad für Tap-Release-Ereignisse zu sehen und dann dieses Ereignis zu verwenden, um ein passendes Select-Button-Ereignis herauszufiltern. Sicherlich ist es keine empfohlene Verwendung der APIs; es scheint keine gute langfristige Lösung zu sein. Wenn ich der Siri-Fernbedienung sagen könnte, dass sie im GCMicroGampepad-Modus keine UI-Ereignisse mehr erzeugt, wäre das hervorragend.

+0

Haben Sie die Tech-Talk-Videos überprüft: https://developer.apple.com/videos/play/techtalks-apple-tv/4/ – Stefan

+0

Spricht das Gespräch die remote.app überhaupt ?? Daran erinnere ich mich nicht. – StilesCrisis

+0

Nein, nur Siri Remote und Gamecontroller. Entschuldigung, ich habe diesen Teil in Ihrer Frage verpasst. – Stefan

Antwort

0

Ich kann das jetzt nicht testen, aber Sie könnten die Siri Remote von einer Remote von Drittanbietern unterscheiden, indem Sie GCEventViewController mit der controllerUserInteractionEnabled-Eigenschaft auf false festgelegt verwenden. Auf diese Weise sollten die Siri Remote-Eingänge nicht an UIKit übergeben werden (wenn der GCEventViewController der erste Responder ist). Die Eingangsereignisse der Drittanbieter-Fernbedienung könnten UIKit übergeben, da es sich im Gegensatz zur Siri Remote nicht um ein GCMicroGamepad handelt.

Bisher unterstützt Apple keine Multiplayer-Spiele mit mehreren Siri-Fernbedienungen, iOS-Fernbedienungen oder IR-Fernbedienungen. Aber ich denke, es könnte kommen, weil the Remote app on iOS will soon support multiplayer gaming (so denke ich, das Apple TV wird mehrere GCMicroGamePad-Controller erkennen).