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)
但是,这是以后发射。首先,我需要知道哪些已经连接。有人知道吗?
你可以拨startWirelessControllerDiscoveryWithCompletionHandler
viewDidLoad
然后检查viewWillAppear
这似乎适用于我刚刚完成的游戏应用程序。
文档:
后您的应用程序已经完成发射,操作系统 自动创建连接的控制器的列表。调用 控制器类方法为所有连接的控制器检索一组GCController对象 。接下来,使用这些对象来配置控制器或读取控制器的输入。如果没有 已连接的控制器或,则在您的应用程序启动时调用此方法时,该阵列将为空。
感谢您的建议,但没有骰子。 –
只要您在应用程序启动时不调用controllers(),就应该可以工作。我更新了我的答案,以包含来自文档的信息。 – rmp
GCController将为每个控制器生成GCControllerDidConnectNotification通知,包括那些在启动前连接到设备的控制器。如果你没有得到对已连接的控制器的通知,确认以下事项:
- 仔细检查它配对并开启
- 确保它是一个MFI控制器。
任何人都知道是否及如何我可以键值观察GCController.controllers()在swift?任何人? Bueller? ..Bueller? –