我有一个tvOS应用程序,其中UITabBarController
是主要故事板的主要入口点。如果用户未登录,则UITabBarController
会以LoginViewController
模式显示。
当用户按下Siri遥控器上的菜单按钮时,系统会自动关闭LoginViewController
并显示UITabBarController
。我想让应用程序退出到tvOS床头板。
期望解决方案涉及UITapGestureRecognizer
覆盖菜单按钮操作或覆盖pressesBegan/pressesTouched
,但我还没有找到解决方案。
答案 0 :(得分:4)
以下代码段有效,并且是基于Apples HIG for Remotes and Interactions
中菜单按钮的预期行为的可接受行为override func viewDidLoad() {
super.viewDidLoad()
let tapRecognizer = UITapGestureRecognizer(target: self, action: "tapped")
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.Menu.rawValue)];
self.view.addGestureRecognizer(tapRecognizer)
}
func tapped() {
exit(EXIT_SUCCESS)
}
答案 1 :(得分:1)
我的情况非常相似,看起来像这样:
+--------------------+
------>| MainViewController |
+--------------------+
|
+-------------+-------------+
| |
v v
+---------------------+ +--------------------+
| LoginViewController | | HomeViewController |
+---------------------+ +--------------------+
如果出现LoginViewController
或HomeViewController
,我希望菜单按钮关闭应用并返回电视主屏幕,不到MainViewController
经过大量谷歌搜索后,我决定采用这种解决方案,似乎运行良好而不会触发警告或要求拨打exit
。
class MainViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
UIApplication.shared.keyWindow?.rootViewController = segue.destination
}
}
希望这对那里的人有帮助