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.

Другие вопросы по тегам