8

我正在使用 Objective-C 开发游戏。Siri 遥控器通过 GCMicroGamepad 运行良好,真正的 MFi 控制器通过 GCGamepad 运行良好。但是,第三方 IR 遥控器在游戏中根本不起作用(iPhone 上的 Remote App 或较旧的 Apple TV 第 3 代遥控器也不起作用)。

如何识别和区分这些输入?


两天后...我发现当与第三方电视遥控器或 iPhone Remote.app 一起呈现时,UITapGestureRecognizer 可用于正确检测上、下、左、右和选择事件。定向事件实际上也是这些类型的遥控器所独有的——Siri 遥控器不会生成定向轻击事件。然而,不幸的是,点击 Siri 遥控器或第三方或 iPhone Remote.app 上的 Select 按钮将从我的点击识别器生成一个 Select 事件。我需要一些方法来区分这两者。

我能找到的唯一区别因素是,点击 Siri 遥控器也会在 GCMicroGamepad 上生成一个按钮-A 按下——第三方遥控器或 iPhone Remote.app 根本不会影响 GCMicroGamepad。但是尝试观察 GCMicroGamepad 的点击释放事件,然后使用该事件过滤掉匹配的 Select 按钮事件是非常不雅的。当然,不推荐使用 API。这似乎不是一个好的长期解决方案。如果我能告诉 Siri 遥控器在 GCMicroGamepad 模式下停止生成 UI 事件,那就太好了。

4

1 回答 1

0

我现在无法对此进行测试,但您可以通过使用GCEventViewController并将 controllerUserInteractionEnabled 属性设置为 false 来区分 Siri Remote 和第三方遥控器。这样,Siri Remote 输入不应传递给 UIKit(当 GCEventViewController 是第一响应者时)。第三方遥控器的输入事件可能会通过 UIKit,因为与 Siri Remote 不同,它不是 GCMicroGamepad。

到目前为止,Apple 确实不支持具有多个 Siri 遥控器、iOS 遥控器或 IR 遥控器的多人游戏。但我认为它可能会到来,因为iOS 上的 Remote 应用程序很快就会支持多人游戏(所以我猜 Apple TV 会识别多个 GCMicroGamePad 控制器)。

于 2016-03-07T03:53:31.643 回答