我为 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
}
它正确地看到了
UIPress
有 press.type
设置为 .menu
当我按下 Siri Remote 上的“菜单”按钮时。然而,它也会得到一个
.menu
当我在连接到 Apple TV 的 DualShock 4 游戏 handle 上按下“圆圈”(buttonB
)时按下事件。这是正常的吗?它是记录在案的行为吗? (我认为这个想法是让应用程序“自动”使用游戏 handle 进行导航。)我并不总是希望“游戏 handle 上的 B”和“ Remote 上的菜单”做同样的事情。我如何区分这两种情况?都没有
UIPressesEvent
也不是 UIPress
似乎在他们的领域中携带任何关于哪个设备发起按键的信息。还有其他方法吗?
最佳答案
我最终改变了我的 ViewController 情况,所以我提出了一个 GCEventViewController每当我不希望 B 按钮执行导航时。然后我使用 GameController
提供的工具处理游戏 handle 按压和 pressesBegan
似乎不再由 B 按钮触发。
关于swift - 如何区分 Siri Remote 按钮按下和游戏 handle 按钮按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62163288/