Я делаю кнопку «слайд для подтверждения», настройка представляет собой пользовательскую кнопку UIB + обычный UIImageView, изображение передается кнопке, а кнопка прослушивает прикосновения и соответственно перемещает изображение. Все работает отлично, за исключением одной детали после того, как кнопка отпущена, все должно вернуться в исходное состояние, но кнопка остается неизменной, как если бы ее альфа была уменьшена вдвое

Я прокомментировал альфа, потому что кнопка собиралась скрыть, но я отключил, что, как только я столкнулся с этой проблемой, проблема возникает независимо от того, установлена ли альфа или нет.
Это код для пользовательской кнопки
class SlideButton: UIButton {
var arrowImage: UIImageView?
var initialLocation: CGPoint?
var initialArrowPosition: CGPoint?
func setArrow(arrow:UIImageView){
arrowImage = arrow
initialArrowPosition = arrow.frame.origin
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
let touch = touches.first!
let location = touch.location(in: self.superview)
initialLocation = location
UIView.animate(withDuration: 0.2) {
//self.alpha = 0.0
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
UIView.animate(withDuration: 0.3) {
self.arrowImage!.frame.origin = self.initialArrowPosition!
//self.alpha = 1.0
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let currentLocation = touch.location(in: self.superview)
arrowImage!.frame.origin.x = initialArrowPosition!.x - initialLocation!.x + (currentLocation.x)
}
}