UILongPressGestureRecognizer в Spritekit и Swift 4 - PullRequest
0 голосов
/ 03 июля 2018

Я - новичок в программировании и пытаюсь научиться делать простую игру для iOS, используя Spritekit и Swift 4.

Пока что я добился небольшого успеха, но я хотел бы добавить некоторые детали в игру, чтобы сделать ее немного более играбельной.

Я добавил некоторые действия в свою GameScene, чтобы когда пользователь касался экрана, Sprite выполнял действие. Он работает нормально, но теперь я хочу продолжать , повторяя это действие, если пользователь держит палец на экране .

Я читал некоторые посты об этом, но все они, похоже, указывают на Objective-C или более ранние версии Swift, которые просто выдавали кучу ошибок при тестировании, и я не могу заставить их работать на меня.

Я знаю, что должен использовать какой-то экземпляр UILongPressGestureRecognizer, но Документация Apple кажется довольно запутанной в том, как его инициализировать или что объявлять в 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: должен быть объявлен или как это решить.

Любое руководство будет с благодарностью!

1 Ответ

0 голосов
/ 03 июля 2018

Синтаксис действия в 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:)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...