1

我试图将GCController框架集成到我的项目中。我对Objective-C并不熟悉,所以请原谅我对这个应该如何工作的无知。GCController框架(OSX)不生成通知

我具有延伸NSOpenGLView,哪些寄存器各种控制器通知观察者的方法,像这样一类:

-(void)awakeFromNib 
{ 
    // Do some stuff 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(controllerStateChanged) name:GCControllerDidConnectNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(controllerStateChanged) name:GCControllerDidDisconnectNotification object:nil]; 
} 

和我已经定义了一个超级简单处理程序作为例如:

- (void)controllerStateChanged { 
    NSLog (@"something happened, let's check it out\n"); 
} 

问题是,这些事件/通知似乎并未触发 - 当我检查[GCController控制器]时,它完全是空的。

当然,如果没有控制器,就没有事件 - 所以也许我做错了什么?或者,无论出于何种原因 - 我的控制器根本无法生成所需的事件(我正在使用在操作系统中注册的PS4控制器,无论是通过无线方式还是通过USB,所以我不确定我是什么我错过了)。

是否有其他需要启用这些通知的地方?我需要以某种方式初始化GCController框架吗?

回答

3

所以事实证明,GCController框架仅支持MFi(Made For iPod,Made For iPhone,Made For iPad)控制器产品。

对于想要支持非MFi控制器的用户,您需要通过IOKit与HID进行交互。或者使用相当出色的DDHIDLib而不是

+1

我已经放在一起了一个包装GCController的框架,并支持使用IOS设备作为桥接的非MFI控制器,特别是iCade控制器。一个优点是控制器显示为MFi控制器,因此可以很容易地拥有一个通用的代码库。它支持所有苹果平台(iOS,tvOS,OS X和watchOS)。它使用NSNetservice进行网络通信。 https://github.com/robreuss/VirtualGameController – 2015-11-10 22:32:06