tvOS GameController GCController.controllers在启动后会在什么时候被填充?

问题描述:

我试图在我的应用程序启动后阅读GCController.controllers()阵列,以了解在应用程序启动时哪些控制器已连接到AppleTV。但是GCController.controllers().count是0,直到viewDidAppear在我的初始UIViewController被调用后的某个点。有没有人知道你可以检查GCController.controllers()知道它已经与当前连接的控制器填充的权威性?tvOS GameController GCController.controllers在启动后会在什么时候被填充?

我知道需要注册控制器连接通知;

NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleControllerDidConnectNotification:" , name: GCControllerDidConnectNotification , object: nil) 

但是,这是以后发射。首先,我需要知道哪些已经连接。有人知道吗?

+0

任何人都知道是否及如何我可以键值观察GCController.controllers()在swift?任何人? Bueller? ..Bueller? –

你可以拨startWirelessControllerDiscoveryWithCompletionHandlerviewDidLoad然后检查viewWillAppear这似乎适用于我刚刚完成的游戏应用程序。

文档:

后您的应用程序已经完成发射,操作系统 自动创建连接的控制器的列表。调用 控制器类方法为所有连接的控制器检索一组GCController对象 。接下来,使用这些对象来配置控制器或读取控制器的输入。如果没有 已连接的控制器或,则在您的应用程序启动时调用此方法时,该阵列将为空

+0

感谢您的建议,但没有骰子。 –

+0

只要您在应用程序启动时不调用controllers(),就应该可以工作。我更新了我的答案,以包含来自文档的信息。 – rmp

GCController将为每个控制器生成GCControllerDidConnectNotification通知,包括那些在启动前连接到设备的控制器。如果你没有得到对已连接的控制器的通知,确认以下事项:

  • 仔细检查它配对并开启
  • 确保它是一个MFI控制器。