我写了一个覆盖程序,用于 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遥控器上的 "菜单 "按钮时。
然而,它 还 得到 .menu
当我按下 "圆圈 "时,按下事件(buttonB
)上的DualShock 4游戏手柄,我已经连接到我的苹果电视。这是否正常?这是有记录的行为吗?(我假设这个想法是为了让应用程序可以用游戏手柄 "自动 "导航。)
我并不总是希望 "游戏手柄上的B "和 "遥控器上的MENU "做同样的事情。我如何区分这两种情况?两种情况都不一样 UIPressesEvent
也不 UIPress
似乎在它们的字段中携带了任何信息,说明是哪个设备发起的按键。有其他方法吗?
我最终改变了我的ViewController的情况,这样我就会呈现一个 GCEventViewController 每当我不想让B键执行导航时。然后我就使用 GameController
来处理游戏手柄的按压和 pressesBegan
似乎不再由B键触发。