Максимальное значение ползунка вызывает несколько методов Swift - PullRequest
0 голосов
/ 16 февраля 2019

Я создал ползунок пользовательского интерфейса, и он работает, но проблема, с которой я столкнулся сейчас, заключается в том, что когда он сдвигается до конца, прежде чем возвращается, я заставил его вызвать функцию, и теперь эта функция вызывается несколько раз.Я хочу, чтобы эта функция была вызвана один раз.Ниже мой код

var startingFrame: CGRect?
    @objc func acknowledgeSwiped(sender: UIPanGestureRecognizer) {
        if let sliderView = sender.view {
            let translation = sender.translation(in: swipeView)
            switch sender.state {
            case .began:
                startingFrame = swipeImage.frame
                fallthrough
            case .changed:
                if let startFrame = startingFrame {

                    var movex = translation.x
                    if movex < -startFrame.origin.x { movex = -startFrame.origin.x }

                    let xMax = swipeView.frame.width - startFrame.origin.x - startFrame.width
                    if movex > xMax {
                        movex = xMax
                        acknowledge()
                    }

                    var movey = translation.y
                    if movey < -startFrame.origin.y { movey = -startFrame.origin.y }

                    let yMax = swipeView.frame.height - startFrame.origin.y - startFrame.height
                    if movey > yMax {
                        movey = yMax

                    }

                    sliderView.transform = CGAffineTransform(translationX: movex, y: movey)
                }
            default: // .ended and others:
                UIView.animate(withDuration: 0.1, animations: {
                    sliderView.transform = CGAffineTransform.identity
                })
            }
        }
    }

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете сделать это следующим образом:
1. Добавить участников

var sliderSessionActive: Bool = False
var sliderFunctionCalled: Bool = False
Извлечение события .ended в отдельный регистр. Управление sliderSessionActive: установите значение 'True' в .began и False в .ended. Установите sliderFunctionCalled на True при вызове вашей функции и на False в .ended. Вызывайте вашу функцию, только если выполняется следующее условие: sliderSessionActive and not sliderFunctionCalled.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...