UILongPressGestureRecognizer на самом деле не работает со свойствами numberOfTapsRequired иimumPressDuration - PullRequest
0 голосов
/ 22 октября 2018

Сначала мой код:

@IBAction func SOSLongPressed(_ sender: UILongPressGestureRecognizer) {
    //sender.numberOfTapsRequired = 2
    sender.minimumPressDuration = 3

    if sender.state == .began {
        print("long pressed")
    }
}

Проблемы:

  1. "долго нажимается" печатается примерно через 0,5 (а не 3) секунды после того, как я началнажимать вид только в первый раз после запуска моего приложения.Другими словами, после запуска приложения UILongPressGestureRecognizer работает должным образом в течение 2-го или 3-го (и т. Д.) Времени, т. Е. Печатает «долго нажатые» через 3 секунды.Но не в первый раз.

  2. Если я раскомментирую строку sender.numberOfTapsRequired = 2, то «долго нажато» также печатается примерно через 0,5 секунды, даже с одним нажатием и удержанием.После этого, даже если я дважды коснусь и удержу в течение 3 секунд, «долго нажатые» больше не будут распечатываться.

Не знаю почему, и надеюсь, что кто-то может мне помочь.

Заранее спасибо!

1 Ответ

0 голосов
/ 22 октября 2018

Вы обновляете значения распознавателя только после того, как он был распознан в первый раз.

Вы должны установить значения для этих свойств сразу после создания распознавателя.Если он был создан в Интерфейсном Разработчике, вы также сможете установить значения там.

Изменить, чтобы ответить на комментарий:

Попробуйте увеличить допуск (allowableMovement) до 30 или50. В течение этих 3 секунд может произойти движение пальца, чтобы распознаватель мог выйти из строя.

Я не могу комментировать свойство numberOfTaps, поскольку никогда не использовал его.

PS,Вы можете изменить все эти настройки из Интерфейсного Разработчика или программно, это не будет иметь значения.Что будет иметь значение, так это то, что вы устанавливаете свойства в правильное время, а не после того, как жест был распознан.

...