Apple TV – 如何仅在点击 "Menu" 按钮时改变焦点

Apple TV – How to only change focus when "Menu" button is tapped

我正在开发一款简单的棋盘游戏。我在左栏中有按钮,如 "New Game"、"Settings" 等(我们称之为 "Menu View")。屏幕的其余部分是 "Board View" 游戏的当前状态。

当用户点击 Apple TV 遥控器上的 "Menu" 按钮只是为了从 "Board View" 导航到我的 "Menu View" 而不是关闭我的应用程序时,是否可以处理?我在同一个控制器中同时拥有 "Menu View" 和 "Board View",也许我需要调整控制器层次结构?

感谢帮助!

您可以覆盖 pressesEnded 方法并手动触发导航转场

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
    for press in presses {
        if(press.type == UIPressType.Menu) {
           // Do what you want
           // ...
        } else {
            super.pressesEnded(presses, withEvent: event)
        }

    }
}

最后,我注意到覆盖 pressesEnded 不会取消启动应用程序后第一次按下的菜单按钮。另一方面,使用 UITapGestureRecognizer 会:

    let menuTapGestureRegocnizer = UITapGestureRecognizer(target: self, action: "menuTapped")
    menuTapGestureRegocnizer.allowedPressTypes = [UIPressType.Menu.rawValue]
    view.addGestureRecognizer(menuTapGestureRegocnizer)