UILongPressGestureRecognizer не распознает.ended состояние
Как гласит заголовок, моя проблема в том, что мой UILongPressGestureRecognizer иногда не запускает код внутри sender.state = .ended
, .began
всегда работает и работает. Я пытался заметить закономерность, но это нечасто, и я не нашел действительного образца или причинно-следственной связи. Я просто добавляю свой UITapGestureRecognizer UILongPressGestureRecognizer к моей кнопке:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(normalTap(_:)))
tapGesture.numberOfTapsRequired = 1
camButton.addGestureRecognizer(tapGesture)
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap(_:)))
longGesture.minimumPressDuration = 0.10
camButton.addGestureRecognizer(longGesture)
И тогда вот моя функция longTap:
@objc func longTap(_ sender: UIGestureRecognizer) {
if sender.state == .ended {
if movieOutput.recordedDuration.seconds == lastRecordDuration || movieOutput.recordedDuration.seconds <= 0.35 {
capturePhoto()
} else {
stopRecording()
}
} else if sender.state == .began {
startCapture()
}
}
Я использую longPress для видео и фотографий, а TapGesture только для фотографий. Я использую AVFoundation.
2 ответа
После получения помощи от @rmaddy решение в основном заключается в реализации действия отмененного состояния. По какой-то причине непрерывный жест UILongPressGesture был отменен. В своем коде я реализовал `if sender.state == .cancelled.
I know this is old question, but writing for those who are facing issue like me.
You can get
sender.state == .possible
when tap is ended.