【问题标题】:UILongPressGestureRecognizer in Spritekit and Swift 4Spritekit 和 Swift 4 中的 UILongPressGestureRecognizer
【发布时间】:2018-07-03 06:11:01
【问题描述】:

我是一个完全的编程新手,我正在尝试学习如何使用 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: 或如何解决这个问题。

任何指导将不胜感激!

【问题讨论】:

标签: ios swift sprite-kit uilongpressgesturerecogni


【解决方案1】:

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:)))

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多