Я думаю, вам понадобится установить делегат UIScrollView, который отслеживает касания начала и конца. Точнее говоря, scrollViewDidEndDragging: willDecelerate - это то, что, я думаю, вам нужно использовать, поскольку оно срабатывает в тот момент, когда пользователь поднимает руку с устройства.
Во-первых, pagingEnabled = НЕТ, кажется очевидным, нам придется контролировать наш собственный пейджинг. Который, я не чувствую, слишком жесток. Отследите направление прокрутки в scrollViewDidScroll:, чтобы у нас был глобальный набор:
BOOL isGoingRight = YES или NO (NO означает, что последнее движение было слева)
float PAGESIZE = 900,0;
Вот как будет выглядеть мой метод делегата scrollview, который обрабатывает пейджинг.
- (void) scrollViewDidEndDragging:(UIScrollView*)_scrollView willDecelerate:(BOOL)willDecelerate {
float offsetProportion = _scrollView.contentOffset.x/_scrollView.frame.size.width;
//depending upon our direction, round up or down
int page = isGoingRight? ceilf(offsetProportion): floorf(offsetProportion);
//manually finish the scroll
[_scrollView scrollRectToVisible:CGRectMake(page*PAGESIZE, 0, _scrollView.frame.size.width, _scrollView.frame.size.height) animated:YES];
}
Я не проверял это, вы можете или не должны отключать касания в точках.