ios - 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 设备。有谁知道为什么会这样?
谢谢!
解决方案
对于 tvOS 手势,您还需要设置allowedTouchTypes
为.indirect
tapPlayPause.allowedTouchTypes = [NSNumber(touchType: .indirect)]
推荐阅读
- salesforce - NiFi - Salesforce JDBC 连接方法
- charat - 我需要使用用户输入来识别字符串中的字符
- mysql - 无法查询总和并将总和与 mysql 查询中的另一个总数进行比较
- php - Nginx 自定义 error_page 与 php
- python - 将单词列表与系列进行比较
- kubernetes - Kubernetes:是否可以在 GKE 区域集群中获取主节点 IP/名称
- ibm-midrange - IBM i 确定可用的编程语言
- python - 使用 python 实现 Excel 自动化
- android - Schedulers.io() 在我的单元测试中抛出 NullPointerException
- ocaml - 当我错误地实现了在 .mli 文件中定义的模块接口时,如何让 Merlin 向我发出警告?