Как видно из заголовка, моя проблема в том, что мой 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.