Paging UIScrollView with peeking neighbor pages
You need to add a view 'behind' the scroll view which covers the entire area where your pages will be visible. This view should implement -hitTest:withEvent:. This method will get called by the OS to determine where to route a particular touch event. All you need to do is return your scroll view for any points within this backing view:
Objective-C
- (UIView *) hitTest: (CGPoint) pt withEvent: (UIEvent *) event {
if (CGRectContainsPoint(self.bounds, pt)) return self.scrollView;
return [super hitTest: pt withEvent: event];
}
Swift 4.0
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return self.bounds.contains(point) ? self.scrollView : super.hitTest(point, with: event)
}
I don't have a high enough ranking to comment on the answers above but you can find a tutorial and sample code on Ray Wenderlich's site: How To Use UIScrollView to Scroll and Zoom Content
This code does use the techniques listed above, specifically the hit test logic.