Solution that worked for me included:
- Setting
canCancelContentTouchesinUIScrollViewtoYES. - Extending
UIScrollViewto overridetouchesShouldCancelInContentView:(UIView *)viewto returnYESwhenviewis aUIButton.
According to documentation touchesShouldCancelInContentView returns “YES to cancel further touch messages to view, NO to have view continue to receive those messages. The default returned value is YES if view is not a UIControl object; otherwise, it returns NO.”
Since UIButton is a UIControl the extension is necessary to get canCancelContentTouches to take effect which enables scrolling.