Как запретить кнопке B игрового контроллера выйти из приложения / вернуться в меню в tvOS
Кнопка игрового контроллера B
по умолчанию выходит из приложения и возвращается на домашний экран tvOS. Сначала я подумал, что это интуитивно понятно, но быстро понял, для чего нужна кнопка МЕНЮ Nimbus (мертвая середина контроллера), и что я действительно хочу использовать кнопку B
в игре.
Установка обработчика изменений для кнопки B
работает, но приложение все еще закрывается, когда кнопка отпущена.
GCControllerButtonValueChangedHandler buttonBHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed) {
NSLog(@"B");
};
2 ответа
Я была такая же проблема.
Решение состояло в том, чтобы мой основной ViewController наследовал от GCEventViewController вместо UIViewController.
По умолчанию при использовании GCEventViewController кнопка MENU не вернется в меню. В этом случае, если вы хотите, чтобы он мог вернуться в меню с исходным поведением, вы можете просто установить controllerUserInteractionEnabled на YES.
смотрите документацию по этому классу здесь: https://developer.apple.com/library/tvos/documentation/GameController/Reference/GCEventViewController_Ref/index.html
редактирование: форум разработчиков Apple, помогите мне решить эту проблему: https://forums.developer.apple.com/message/57926
надеюсь это поможет,
У меня тоже была проблема, связанная с Unity, но я думаю, что это довольно хакерское решение может помочь.
Производная от GCEventViewController, можно переопределить несколько методов, один из них:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
возврат или обработка нажатий без вызова super удаляет все вызовы внутренних устройств.