1

UITabBarControllerメインストーリーボードのメインエントリポイントとしてtvOS アプリがあります。ユーザーがログインしていない場合、 はモーダルUITabBarControllerを表示します。LoginViewController

ユーザーが Siri リモートの [メニュー] ボタンを押すと、システムは自動的に を閉じてLoginViewControllerを表示しUITabBarControllerます。代わりに、アプリを tvOS ヘッドボードに終了させたい。

UITapGestureRecognizerソリューションには、メニュー ボタン アクションをオーバーライドするか、オーバーライドすることが含まれると予想されますpressesBegan/pressesTouchedが、まだ解決策が見つかりません。

4

2 に答える 2

5

この次のスニペットは機能し、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)
}
于 2016-01-03T05:18:38.207 に答える
2

私は非常によく似た状況にありましたが、次のようになりました。

               +--------------------+
        ------>| 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
    }
}

これが誰かに役立つことを願っています

于 2017-02-26T12:47:42.440 に答える