首页 > 解决方案 > UITapGestureRecognizer 没有在 tvOS 上接收输入

问题描述

我正在为 tvOS 开发一个小型 SpriteKit 游戏。当用户单击遥控器上的播放/暂停按钮时,我需要接收输入。查看文档,看来我应该只需要在我的场景视图中添加一个 UITapGestureRecognizer 。我实现了以下代码:

override func didMove(to view: SKView) {
    let tapPlayPause = UITapGestureRecognizer(target: self, action: #selector(tapTesting))
    tapPlayPause.allowedPressTypes = [NSNumber(value: UIPress.PressType.playPause.rawValue)]
    view.addGestureRecognizer(tapPlayPause)

    let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(swipeUp))
    swipeUp.direction = .up
    view.addGestureRecognizer(swipeUp)
}

@objc func tapTesting(_ sender: UITapGestureRecognizer) {
    print("TAP")
}

但是,当我在 Apple TV 4K(运行 tvOS 15)上运行该应用程序时,没有输出,据我所知,没有触发任何点击代码。

我也尝试过代码,self.isUserInteractionEnabled = true但我仍然没有收到点击输入。

我在上面实现的滑动手势非常完美,点击手势也适用于我的 iOS 设备。有谁知道为什么会这样?

谢谢!

标签: iosswiftsprite-kittvos

解决方案


对于 tvOS 手势,您还需要设置allowedTouchTypes.indirect

tapPlayPause.allowedTouchTypes = [NSNumber(touchType: .indirect)]

推荐阅读