Итак, я делаю игру для tvOS и переопределяю кнопку меню. По сути, если вы находитесь в игре и нажимаете кнопку меню, вы попадаете в главное меню. Если вы находитесь в главном меню и нажимаете кнопку меню, вы вернетесь на главный экран Apple TV.
Вот код для этого:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
{
UIPress* p = [presses anyObject];
switch (p.type) {
case UIPressTypeMenu:
NSLog(@"Test");
if(self.gamestate == kGameStateMainMenu)
{
[super pressesBegan:presses withEvent:event];
}
else if(self.gamestate == kGameStateResetting)
{
}
else
{
self.gamestate = kGameStateResetting;
[self quitGame];
}
break;
default:
break;
}
}
Это работает правильно, но есть одна проблема: если вы выйдете на главный экран Apple TV и вернетесь в приложение (не выходя из него), то, несмотря ни на что, нажатие кнопки меню вернет вас на главный экран Apple TV.
Что еще более странно, вышеописанный метод вызывается, и он даже запускает метод quitGame
. Он не вызывает [super pressesBegan:presses withEvent:event]
, по крайней мере, в приведенном выше методе, но все равно переводит пользователя на главный экран.
Это баг, или я что-то пропустил?
kGameStateSelectCharacter
,kGameStateInGame
и т. д. Когда это происходит, это всегда одно из 7 игровых состояний, которые попадают в категориюelse
выше. Несмотря ни на что, я имею в виду, что состояние игры неkGameStateMainMenu
. - person David   schedule 28.10.2015