Распознать UILongPressGestureRecognizer и UIPanGestureRecognizer на одном и том же UIButton - PullRequest
0 голосов
/ 05 февраля 2020

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

К моей кнопке я добавил UILongPressGestureRecognizer и UIPanGestureRecognizer, которые делают именно это. По отдельности они работают. Тем не менее, они не работают вместе.

Как я могу сделать запись моей кнопки при длительном нажатии, а также позволить мне постукивать пальцем и распознавать это тоже? Вот как я добавил свои распознаватели:

let long = UILongPressGestureRecognizer(target: self, action: #selector(record(gesture:)))
button.addGestureRecognizer(long)

let pan = UIPanGestureRecognizer(target: self, action: #selector(zoom(pan:)))
button.addGestureRecognizer(pan)

Ответы [ 2 ]

4 голосов
/ 05 февраля 2020

Вам необходимо подтвердить делегата этих двух жестов. например:

let long = UILongPressGestureRecognizer(target: self, action: #selector(record(gesture:))) 
long.delegate = self 
button.addGestureRecognizer(long)

let pan = UIPanGestureRecognizer(target: self, action: #selector(zoom(pan:))) 
pan.delegate = self
button.addGestureRecognizer(pan)

и существует метод делегата для одновременного распознавания нескольких жестов.

gestRecognizer (_: shouldRecognizeSimrallelouslyWith:)

define что в вашем классе и вернуть true.

вы получите то, что вы хотите.

0 голосов
/ 05 февраля 2020

Я знаю, что это не совсем то, что задавал вопрос, но вы можете фактически обойти необходимость использовать gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:) и использовать UILongPressGestureRecognizer как UIPanGestureRecognizer, используя изменения UIGestureRecognizer.State. Это то, что я делал в прошлом, очищает вещи и имеет более логичный смысл, чем два распознавателя жестов

...