问题描述
我被著名的“无法识别的选择器发送给实例”震惊。完整的错误是
-[MyGame.GameScene handlePanFrom:]:无法识别的选择器已发送到实例0x103c05fe0
所指功能是她在游戏场景中的作用:
func handlePanFrom(recognizer: UIPanGestureRecognizer) {
if recognizer.state == .began {
var touchLocation = recognizer.location(in: recognizer.view)
touchLocation = self.convertPoint(fromView: touchLocation)
self.selectNodeForTouch(touchLocation: touchLocation)
} else if recognizer.state == .changed {
var translation = recognizer.translation(in: recognizer.view!)
translation = CGPoint(x: translation.x,y: -translation.y)
self.panForTranslation(translation: translation)
recognizer.setTranslation(CGPoint.zero,in: recognizer.view)
} else if recognizer.state == .ended {
if selectedplayer.name != kAnimalNodeName {
let scrollDuration = 0.2
let veLocity = recognizer.veLocity(in: recognizer.view)
let pos = selectedplayer.position
// This just multiplies your veLocity with the scroll duration.
let p = CGPoint(x: veLocity.x * CGFloat(scrollDuration),y: veLocity.y * CGFloat(scrollDuration))
var newPos = CGPoint(x: pos.x + p.x,y: pos.y + p.y)
newPos = self.boundLayerPos(aNewPosition: newPos)
selectedplayer.removeAllActions()
let moveto = SKAction.move(to: newPos,duration: scrollDuration)
moveto.timingMode = .eaSEOut
selectedplayer.run(moveto)
}
}
}
let gestureRecognizer = UIPanGestureRecognizer(target: self,action: Selector(("handlePanFrom:")))
self.view!.addGestureRecognizer(gestureRecognizer)
如果您需要查看我将提供的其他任何代码。
还应注意,我在GameViewController中更改了一些代码,但我不知道这是否与它有关。
解决方法
尝试使用#selector语法,如下所示:
let gestureRecognizer = UIPanGestureRecognizer( target: self,action: #selector(handlePanFrom(recognizer:)) )
并将方法标记为@objc
@objc func handlePanFrom(recognizer: UIPanGestureRecognizer) {
print("Pan !")
}