tvOS - 如何以编程方式返回主屏幕
tvOS - how to go back to home screen programmatically
在我的 tvOS 应用程序的主屏幕上,我正在使用 UITapGestureRecognizer 来观察按下的菜单按钮。根据屏幕上的内容,我需要以不同的方式处理它,但显然,在某些情况下,我想将菜单按下解释为 "exit to the home screen." 我找不到 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);
}
事实证明,我可以通过以编程方式在我希望 MENU 返回主页时从视图中删除 UITapGestureRecognizer
并在我想再次捕获它时重新添加它来完成此操作。超级笨拙,但现在效果很好。
您可以设置一个 Bool
并在您的 handleTap
功能中将其检查到 return 到主屏幕:
if returnToHomeScreen {
UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil)
}
您可以为您的 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
}
在我的 tvOS 应用程序的主屏幕上,我正在使用 UITapGestureRecognizer 来观察按下的菜单按钮。根据屏幕上的内容,我需要以不同的方式处理它,但显然,在某些情况下,我想将菜单按下解释为 "exit to the home screen." 我找不到 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);
}
事实证明,我可以通过以编程方式在我希望 MENU 返回主页时从视图中删除 UITapGestureRecognizer
并在我想再次捕获它时重新添加它来完成此操作。超级笨拙,但现在效果很好。
您可以设置一个 Bool
并在您的 handleTap
功能中将其检查到 return 到主屏幕:
if returnToHomeScreen {
UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil)
}
您可以为您的 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
}