Lyn*_*ynn 10 apple-tv gamepad swift tvos siri-remote
我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
}
Run Code Online (Sandbox Code Playgroud)
当我按下 Siri Remote 上的“菜单”按钮时UIPress,它会正确地看到已press.type设置为.menu。
但是,当我在已连接到 Apple TV 的 DualShock 4 游戏手柄上按“圆圈”( )时,它也会收到一个.menu新闻事件buttonB。这是正常的吗?它是记录在案的行为吗?(我认为这个想法是让应用程序“自动”使用游戏手柄进行导航。)
我并不总是希望“游戏手柄上的 B”和“遥控器上的菜单”做同样的事情。我如何区分这两种情况?既没有UIPressesEvent也没有UIPress似乎在他们的领域中携带任何关于哪个设备发起按键的信息。还有其他方法吗?
我最终改变了 ViewController 的情况,以便每当我不希望 B 按钮执行导航时都会显示GCEventViewController 。然后我使用 提供的工具来GameController处理游戏手柄按下操作,并且pressesBegan似乎不再由 B 按钮触发。
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |