Something further up the view hierarchy will be interfering with your tap gesture.
For UIButton
s embedded in a UIScrollView
, the scroll view purposely delays touches in order to differentiate a user's pan gesture (scroll) from a tap (which it will pass through to it's subviews).
You can eliminate this delay by setting thedelaysContentTouches
property on the scroll view to NO
, either in code or via the Scroll View > Touches section in the IB/ Storyboard inspector. However, doing so means the user won't be able to scroll if they start the pan gesture with their finger on the button, so it's generally not recommended.