在同一UIButton上识别UILongPressGestureRecognizer和UIPanGestureRecog



我想做一个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)

您需要确认这两个手势的委托。 例如:

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)

并且有一个委托方法可以同时识别多个手势。

gestureRecognizer(_:shouldRecognizeSimultaneous With:(

在您的类中定义它并返回 true。

你会得到你想要的。

我知道这不是问题所问的,但您实际上可以绕过必须使用gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)并使用UILongPressGestureRecognizer作为UIPanGestureRecognizer使用UIGestureRecognizer.State更改。 这就是我过去所做的,清理了事情,比拥有两个手势识别器更合乎逻辑。

最新更新