Как настроить распознаватели жестов как ожидающих, так и не ожидающих работы в одном представлении - PullRequest
0 голосов
/ 07 июля 2019

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

К сожалению, если более одного UITapGestureRecognizer с одним и тем же числомOfTapsRequired/ numberOfTouchesRequired добавляется в то же представление, запускается только последнее добавленное в представление.

func setupTapGestures() {
    let view = GameViewController.getInstance().scnView

    let singleTap = UITapGestureRecognizer(target: self, action: #selector(handleSingleTap(_:)))
    singleTap.numberOfTapsRequired = 1
    singleTap.numberOfTouchesRequired = 1
    view?.addGestureRecognizer(singleTap)

    let confirmedSingleTap = UITapGestureRecognizer(target: self, action: #selector(handleConfirmedSingleTap(_:)))
    confirmedSingleTap.numberOfTapsRequired = 1
    confirmedSingleTap.numberOfTouchesRequired = 1
    view?.addGestureRecognizer(confirmedSingleTap)

    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap(_:)))
    doubleTap.numberOfTapsRequired = 2
    doubleTap.numberOfTouchesRequired = 1
    view?.addGestureRecognizer(doubleTap)
    confirmedSingleTap.require(toFail: doubleTap)
}

В приведенном выше коде singleTap, который всегда должен срабатывать при нажатии, никогда не будет запускаться.Если вы переместите строку первого представления? .AddGestureRecognizer () на следующую после второй, то подтверждается, что SingleTap никогда не сработает, даже если двойное касание не происходит.

Есть ли способ поддержать оба?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...