好的,所以我正在为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主屏幕并返回应用程序(不退出),那么无论如何,按菜单按钮会将您带回到苹果电视主屏幕。
更奇怪的是,上面的方法被调用,它甚至会运行quitGame
方法。它不会调用[super pressesBegan:presses withEvent:event]
,至少不会调用上述方法,但它仍然会将用户带到主屏幕。
这是一个错误,还是我错过了什么?
答案 0 :(得分:3)
你不仅可以覆盖pressBegan - 你还必须覆盖pressEnded;否则它会触发并调用父母的默认行为来退出你的应用程序。
答案 1 :(得分:0)
如果您退出到Apple TV主屏幕并返回应用程序然后按下菜单按钮会将您带回苹果电视主屏幕,您可能已经覆盖了&#39; pressEnded&#39 ;代表也回忆起它的超级,删除了pressEnded中的这个超级调用。