10

pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?)我在我的 ViewController 上写了一个覆盖。

  open override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
    #if os(tvOS)
    for press in presses {
      switch press.type {
      case .menu: print("menu"); break;
      case .select: print("select"); break;
      case .playPause: print("playPause"); break;
      default: break;
      }
    }
    #endif
  }

当我按下 Siri Remote 上的“菜单”按钮时UIPress,它正确地看到了一个press.type设置为。.menu

但是,当我在连接到 Apple TV 的 DualShock 4 游戏手柄上按下“圆圈”( ) 时,它也会收到新闻事件。这是正常的吗?它是记录在案的行为吗?(我认为这个想法是让应用程序“自动”通过游戏手柄导航。).menubuttonB

我并不总是希望“游戏手柄上的 B”和“遥控器上的 MENU”做同样的事情。我如何区分这两种情况?在他们的领域中似乎也没有携带任何关于哪个设备发起按键的信息UIPressesEventUIPress还有其他方法吗?

4

1 回答 1

0

我最终改变了我的 ViewController 情况,以便在我不希望 B 按钮执行导航时呈现一个GCEventViewController 。然后我使用提供的工具GameController来处理游戏手柄按下,pressesBegan似乎不再由 B 按钮触发。

于 2020-06-04T16:19:08.760 回答