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