Subclass UIButton y supera los events táctiles – no funciona

Necesito una animation de resorte de escala para todos mis botones en un proyecto. Así que subclasé el button UIB y anulo las funciones de evento táctil.

import UIKit class UIAnimatedButton: UIButton { override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { UIView.animateWithDuration(0.1, animations: { () -> Void in self.transform = CGAffineTransformMakeScale(0.8, 0.8) }) super.touchesBegan(touches, withEvent: event) } override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) { UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { () -> Void in self.transform = CGAffineTransformIdentity }) { (Bool) -> Void in super.touchesCancelled(touches, withEvent: event) } } override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { () -> Void in self.transform = CGAffineTransformIdentity }) { (Bool) -> Void in super.touchesEnded(touches, withEvent: event) } } } 

Esto funciona muy rápido, pero cuando toco el button por un largo time (1-2 segundos) no recibo un toque dentro del evento de acción. cuando lo cambio a un UIB normal, todo funciona bien.

¿Alguna idea de por qué sucede eso?

En lugar de llamar a súper en el bloque de finalización de los touchesCancelled y los methods touchesEnded , llamé a self.sendActionsForControlEvents(UIControlEvents.TouchUpInside) allí.