UIGestureRecognizer receive touch but forward it to UIControl as well
Have you tried with this?
cancelsTouchesInView A Boolean value affecting whether touches are delivered to a view when a gesture is recognized.
@property(nonatomic) BOOL cancelsTouchesInView