tvos swift spritekit - UITapGestureRecognizer 没有响应
Posted
技术标签:
【中文标题】tvos swift spritekit - UITapGestureRecognizer 没有响应【英文标题】:tvos swift spritekit - UITapGestureRecognizer not responding 【发布时间】:2016-11-11 20:22:52 【问题描述】:我根本无法让这个手势做出回应。
self.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(self.movePlayer(_:)))
tap.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue)]
view?.addGestureRecognizer(tap)
和功能:
func movePlayer(_ sender: UITapGestureRecognizer)
player.run(SKAction.moveBy(x: 200, y: 0, duration: 10))
print("Right!")
按下模拟器遥控器上的播放按钮时什么也没有发生。我错过了什么?
【问题讨论】:
您在点击时是否点击了选项? (我认为是选项,它会在模拟器遥控器上说) 【参考方案1】:点击手势识别器代码看起来不错。你在哪里加的,是在didMoveToView里面吗?
我最近在玩新的 ios 10
override func sceneDidLoad()
方法,我注意到那里添加的手势识别器不起作用。
这在模拟器中有效
class GameScene: SKScene, SKPhysicsContactDelegate
override func didMove(to view: SKView)
self.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(self.movePlayer(_:)))
tap.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue)]
view.addGestureRecognizer(tap)
func movePlayer(_ sender: UITapGestureRecognizer)
print("Right!")
希望对你有帮助
【讨论】:
....是的,它在 sceneDidLoad() 函数中。我尝试将其移至 didMove,但仍然无法正常工作。 手势需要 didMove,我记得用 sceneDidLoad 测试过,但它不起作用。我刚刚用一个新项目对此进行了测试,它运行良好。你能用你场景的整个代码更新你的问题吗? 好吧,我尝试在一个新项目中对其进行测试,现在它可以工作了。将我的代码移动到 didMove 确实有效。我还将精灵放置移动到 didMove ,它修复了另一个错误,它创建了一个移动的精灵副本。那么,sceneDidLoad 是不是很糟糕? 嘿,是的,sceneDidLoad 很奇怪,我猜它在 didMoveToView 之前被调用,这就是识别器不起作用的原因。感谢您的标记。快乐编码以上是关于tvos swift spritekit - UITapGestureRecognizer 没有响应的主要内容,如果未能解决你的问题,请参考以下文章