如何防止游戏控制器按钮 B 退出应用程序/导航回 tvOS 中的菜单
How to prevent game controller button B from quitting app / navigating back to menu in tvOS
默认情况下,游戏控制器按钮 B
用于退出应用程序并导航回 tvOS 主屏幕。起初我认为这很直观,但很快意识到这就是 Nimbus MENU 按钮(控制器的死角)的用途,我实际上想在游戏中使用按钮 B
。
为按钮 B
设置更改处理程序有效,但当释放按钮时应用程序仍然退出。
GCControllerButtonValueChangedHandler buttonBHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
NSLog(@"B");
};
我遇到了同样的问题。
解决方案是让我的主要 ViewController 继承自 GCEventViewController 而不是 UIViewController。
默认情况下,当使用GCEventViewController时,MENU按钮不会return进入菜单。在这种情况下,如果您希望它能够 return 以原始行为进入菜单,您只需将 controllerUserInteractionEnabled 设置为 YES。
请在此处查看此 class 的文档:
https://developer.apple.com/library/tvos/documentation/GameController/Reference/GCEventViewController_Ref/index.html
编辑:apple dev 论坛帮我解决这个问题:https://forums.developer.apple.com/message/57926#57926
希望这对您有所帮助,
我也遇到了与 Unity 相关的问题,但我认为这个相当老套的解决方案可以提供帮助。
派生自 GCEventViewController 可以重写多种方法,其中之一是:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
在不调用 super 的情况下返回或处理压力机会删除对内部结构的所有调用。
默认情况下,游戏控制器按钮 B
用于退出应用程序并导航回 tvOS 主屏幕。起初我认为这很直观,但很快意识到这就是 Nimbus MENU 按钮(控制器的死角)的用途,我实际上想在游戏中使用按钮 B
。
为按钮 B
设置更改处理程序有效,但当释放按钮时应用程序仍然退出。
GCControllerButtonValueChangedHandler buttonBHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
NSLog(@"B");
};
我遇到了同样的问题。
解决方案是让我的主要 ViewController 继承自 GCEventViewController 而不是 UIViewController。
默认情况下,当使用GCEventViewController时,MENU按钮不会return进入菜单。在这种情况下,如果您希望它能够 return 以原始行为进入菜单,您只需将 controllerUserInteractionEnabled 设置为 YES。
请在此处查看此 class 的文档: https://developer.apple.com/library/tvos/documentation/GameController/Reference/GCEventViewController_Ref/index.html
编辑:apple dev 论坛帮我解决这个问题:https://forums.developer.apple.com/message/57926#57926
希望这对您有所帮助,
我也遇到了与 Unity 相关的问题,但我认为这个相当老套的解决方案可以提供帮助。
派生自 GCEventViewController 可以重写多种方法,其中之一是:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
在不调用 super 的情况下返回或处理压力机会删除对内部结构的所有调用。