【问题标题】:SpriteKit: what causes touchesMoved to stop getting called?SpriteKit:是什么导致 touchesMoved 停止被调用?
【发布时间】:2015-04-02 01:24:48
【问题描述】:

GameScene.swift 内的touchesMoved 在几次调用(通常是三到四次)后不会被调用,即使我们一直在屏幕上滑动手指(即,从不将手指从屏幕上移开)。

我们创建了一个简单的项目,只有代码打印touchesMoved,没有问题。换句话说,touchesMoved 按预期工作,在我们滑动手指时继续被调用。

显然,项目中有一些代码/配置导致touchesMoved 在几次调用后停止被调用(并且没有调用 touchesEnd)。是什么原因造成的?

touchesMoved 未被调用的代码:

    override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {            
        let curTouch = touches.anyObject() as UITouch
        let curPoint = curTouch.locationInView(self.view)
        println(curPoint)
}

【问题讨论】:

  • 你需要检查 UIView 是否在视图层次结构中
  • @dimpiax 谢谢迪玛!你什么意思?此代码在 GameScene.swift 中。为什么 UIView 不在视图层次结构中,这意味着什么代码会导致这种情况发生,以便我们以后可以避免这种情况?
  • 你能把你的代码或项目上传到github吗?
  • 要回答您的问题,当检测到触摸并移动触摸时,会调用触摸移动。当您移除触摸时,它以 touchesEnded 结束。
  • 可能你的触摸被取消了。你有没有尝试添加 touchesCanceled 方法来查看是否触摸到那里?

标签: ios iphone swift sprite-kit


【解决方案1】:

我遇到了同样的问题。在我的情况下,是 SKView 中的一个手势识别器,删除它后一切都像一个魅力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多