【发布时间】:2020-06-03 00:14:04
【问题描述】:
我在我的 ViewController 上为 pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) 写了一个覆盖。
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 上的“菜单”按钮时,它正确地看到了 press.type 设置为 .menu 的 UIPress。
但是,当我在连接到 Apple TV 的 DualShock 4 游戏手柄上按下“圆圈”(buttonB) 时,它也会收到 .menu 按下事件。这是正常的吗?它是记录在案的行为吗? (我认为这个想法是让应用程序可以通过游戏手柄“自动”导航。)
我并不总是希望“游戏手柄上的 B”和“遥控器上的 MENU”做同样的事情。我如何区分这两种情况? UIPressesEvent 和 UIPress 似乎都没有在其字段中携带任何关于哪个设备发起按键的信息。还有其他方法吗?
【问题讨论】:
标签: swift tvos apple-tv gamepad siri-remote