Как запретить кнопке 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 удаляет все вызовы внутренних устройств.

Другие вопросы по тегам