Spritekit 和 Swift 4 中的 UILongPressGestureRecognizer

UILongPressGestureRecognizer in Spritekit and Swift 4

我是一个完全的编程新手,我正在尝试学习如何使用 Spritekit 和 Swift 4.

制作一个简单的 iOS 游戏

到目前为止,我取得了一些小的成功,但我想为游戏添加一些进一步的细节,使其更具可玩性。

我在我的 GameScene 中添加了一些动作,这样当用户点击屏幕时,Sprite 就会执行一个动作。它工作正常,但现在我想在用户将手指放在屏幕上时 重复该操作

我已经阅读了一些关于它的帖子,但它们似乎都指向 Objective-C 或 Swift 的早期版本,它们在测试时会弹出一堆错误,而我无法得到它们为我工作。

我知道我应该使用 UILongPressGestureRecognizer 的某些实例,但 Apple's documentation 似乎对如何初始化它或在 action: Selector?

上声明什么感到困惑

据我了解,在我的 viewDidLoad 中,我必须包含如下内容:

let longTapRecognizer = UILongPressGestureRecognizer(target: self, action: "handleLongPress:")
self.addGestureRecognizer(longTapRecognizer)

然后编写一个处理动作的函数(我不确定是否也在 viewDidLoad 中):

func handleLongPress(recognizer: UIGestureRecognizer) {
    if recognizer.state == .began {
        print("Long press")
    }
}

这听起来很简单,但我似乎无法理解 action: 应该如何声明或如何解决这个问题。

任何指导将不胜感激!

swift 中操作的语法是 #selector(methodName(params:))

(见https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift

你的手势识别器应该这样写:

let longTapRecognizer = UILongPressGestureRecognizer(
  target: self,
  action: #selector(handleLongPress(recognizer:)))