在我的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);
}
答案 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
}