watchOS 3 SpriteKit中的TouchEvents?

Lim*_*ean 4 sprite-kit watchkit watchos-3

在watchOS 3中使用SpriteKit时,如何处理触摸事件?我正在从iOS移植SpriteKit游戏,并且下面的代码无法正常工作。还是必须以某种方式控制WKInterfaceController?

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)  {}

override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)  {}
Run Code Online (Sandbox Code Playgroud)

LMV*_*gel 5

在对同一问题感到沮丧之后,我开始使用手势识别器,并从那里开始计算位置。

@IBAction func handleSingleTap(tapGesture: WKTapGestureRecognizer) {
    let location = tapGesture.locationInObject()
    if yourSpriteNodeRect.contains(location) {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

但有一个提示:我在创建用于处理手势识别器的方法时发现了一个奇怪的错误,那就是默认情况下不会将手势传递到方法中。我必须按住Ctrl键并拖动以创建方法,然后修改签名以包含手势。如果我创建的方法带有签名中的手势,则Xcode不允许我将手势识别器附加到该方法。

似乎会有更好的方法来检测触摸,但这就是我目前发现的解决方法。