tvOS - 如何以编程方式返回主屏幕

时间:2016-02-04 07:53:04

标签: tvos uitapgesturerecognizer

在我的tvOS应用程序的主屏幕上,我正在使用UITapGestureRecognizer来监视正在按下的菜单按钮。根据屏幕上的内容,我需要以不同的方式处理它,但很明显,在某些情况下,我想解释菜单按下"退出到主屏幕。"我无法找到一个干净利落的API。 exit(0)就像我能找到的那样近,感觉就像是一次崩溃 - 应用程序突然消失,没有过渡效果。我可以使用API​​吗?谢谢!

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(consumeTap:)];
    tapGestureRec.allowedPressTypes = @[@(UIPressTypeMenu)];
    [self.navigationController.view addGestureRecognizer:tapGestureRec];
}

- (void)handleTap:(id)_
{
    if (ShouldExitNow()) exit(0);
}

3 个答案:

答案 0 :(得分:2)

事实证明,我可以通过以编程方式从视图中删除UITapGestureRecognizer,只要我想让MENU回家,并在我想要再次捕获它时重新添加它。超级笨拙,但现在效果很好。

答案 1 :(得分:2)

您可以设置Bool并在handleTap功能中查看它以返回主屏幕:

if returnToHomeScreen {
    UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil)
}

答案 2 :(得分:0)

您可以为UITapGestureRecognizer设置委托,并实现以下UIGestureRecognizerDelegate方法:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive press: UIPress) -> Bool {
    // return false to skip your handling of this menu button press
    // (and perform default "go to home" system action)
    // or return true to handle it by yourself
}