【问题标题】:Apple TV – How to only change focus when "Menu" button is tappedApple TV – 如何仅在点击“菜单”按钮时更改焦点
【发布时间】:2015-10-25 11:09:26
【问题描述】:

我正在开发一个简单的棋盘游戏。我在左栏中有“新游戏”、“设置”等按钮(我们称之为“菜单视图”)。屏幕的其余部分是显示当前游戏状态的“棋盘视图”。

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

感谢您的帮助!

【问题讨论】:

    标签: tvos apple-tv focus-engine


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以覆盖 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)
              }
      
          }
      }
      

      【讨论】:

      • 这看起来不错,我实际上可以处理菜单按钮的点击。问题是我仍然无法取消关闭应用程序的菜单操作。任何的想法?编辑:在真实设备上,它看起来有效!谢谢!
      • 小心。我的应用程序被拒绝:“Siri Remote 上的菜单按钮在您的应用程序中的行为与预期不符。 '
      • 我实际上注意到,它不能 100% 工作。当我启动应用程序并开始游戏(在右侧的控制器中获得焦点)并第一次点击菜单按钮时,我的焦点移动到菜单(左侧的控制器)但应用程序仍然关闭。再次启动应用程序(从后台唤醒它)后,菜单按钮以正确的方式工作(仅当我在菜单控制器中时才关闭应用程序)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多