Я создал ползунок, этот ползунок перемещается от одного края к другому и после перетаскивания возвращается в исходное положение.Когда он достигает конца слайда, я вызываю функцию, но проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда она перемещается в конец, функция вызывается несколько раз, из которых она должна вызываться только один раз.как я могу сделать так, чтобы этот слайдер совершал вызов только один раз, а не несколько раз, потому что если пользователь решит удерживать его в конце, метод будет вызываться повторно.пока мой код
override func viewDidLoad() {
super.viewDidLoad()
let swipeGesture = UIPanGestureRecognizer(target: self, action: #selector(acknowledgeSwiped(sender:)))
swipeImage.addGestureRecognizer(swipeGesture)
swipeImage.isUserInteractionEnabled = true
swipeGesture.delegate = self as? UIGestureRecognizerDelegate
}
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
acknowledgeTrip()
}
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
})
}
}
}
любая помощь будет оценена