GCController框架(OSX)不生成通知

时间:2015-02-08 14:39:44

标签: objective-c interface-builder nsnotificationcenter nsopenglview gamecontroller

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

我有一个扩展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框架?

1 个答案:

答案 0 :(得分:3)

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

对于任何想要支持非MFi控制器的人,您需要通过IOKit与HID连接。或者使用相当优秀的DDHIDLib代替