微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法识别的选择器已发送到实例Sprite Kit

如何解决无法识别的选择器已发送到实例Sprite Kit

我被著名的“无法识别的选择器发送给实例”震惊。完整的错误

-[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 !")
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。