如何区分Siri遥控器按键和游戏手柄按键的按法?

问题描述 投票:10回答:1

我写了一个覆盖程序,用于 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
  }

它正确地看到一个 UIPresspress.type 设为 .menu 当我按下Siri遥控器上的 "菜单 "按钮时。

然而,它 得到 .menu 当我按下 "圆圈 "时,按下事件(buttonB)上的DualShock 4游戏手柄,我已经连接到我的苹果电视。这是否正常?这是有记录的行为吗?(我假设这个想法是为了让应用程序可以用游戏手柄 "自动 "导航。)

我并不总是希望 "游戏手柄上的B "和 "遥控器上的MENU "做同样的事情。我如何区分这两种情况?两种情况都不一样 UIPressesEvent 也不 UIPress 似乎在它们的字段中携带了任何信息,说明是哪个设备发起的按键。有其他方法吗?

swift tvos apple-tv gamepad siri-remote
1个回答
0
投票

我最终改变了我的ViewController的情况,这样我就会呈现一个 GCEventViewController 每当我不想让B键执行导航时。然后我就使用 GameController 来处理游戏手柄的按压和 pressesBegan 似乎不再由B键触发。

© www.soinside.com 2019 - 2024. All rights reserved.