2015-11-26 30 views
3

遊戲控制器按鈕B默認情況下會退出應用程序並導航回tvOS主屏幕。起初我以爲這很直觀,但很快就意識到這是Nimbus MENU按鈕(控制器的死亡中間部分)的作用,並且我實際上想在遊戲中使用按鈕B如何防止遊戲控制器按鈕B退出應用程序/導航返回到tvOS中的菜單

設置按鈕B的更改處理程序的作品,但該應用程序仍然退出時釋放按鈕。

GCControllerButtonValueChangedHandler buttonBHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) { 
     NSLog(@"B"); 
}; 
+0

「這就是Nimbus MENU按鈕的用途」我的意思是,從遊戲提供的遊戲菜單中選擇退出。這是GCController的controllerPausedHandler的用途。 – Bobjt

回答

3

我有同樣的問題。

解決方案是讓我的主ViewController繼承自GCEventViewController而不是UIViewController。

默認情況下,使用GCEventViewController時,MENU按鈕不會返回菜單。在這種情況下,如果您希望它能夠以原始行爲返回到菜單,則可以簡單地將controllerUserInteractionEnabled設置爲YES。

看到這方面的文檔類在這裏: https://developer.apple.com/library/tvos/documentation/GameController/Reference/GCEventViewController_Ref/index.html

編輯:蘋果開發論壇helpep我解決這個問題:https://forums.developer.apple.com/message/57926#57926

希望這有助於

+0

檢查出來,謝謝 弗朗索瓦,會報告結果! – Bobjt

+0

很快會接受這個答案 - 道歉我真的沒有回到這部分的impl。然而! – Bobjt

+0

謝謝弗朗索瓦。這工作。但是,我的新問題歸類爲GCEventViewController之後,菜單按鈕的行爲並不像預期的那樣(默認情況下會吞噬); #if os(tvOS)圍繞類簽名不會編譯,因此我不能再通過iOS和tvOS共享我的View Controller(使用Swift;我知道這可以在Obj-c中使用)。將提出新的問題,那些=) – Bobjt

0

我也有這個問題,涉及到統一,但我認爲這個相當黑客的解決方案可以提供幫助。

從GCEventViewController一個派生可以覆蓋多種方法,其中之一是:

- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event 

返回或處理印刷機,而無需調用超級移除對內部所有來電。

+0

謝謝。無論哪種方式,您都需要繼承GCEventViewController,所以我不確定這比僅提供buttonB處理程序(用於B)和controllerPausedHandler(用於MENU)更好。這根據弗朗索瓦斯的答案。 – Bobjt

相關問題