Я пытаюсь реализовать пользовательскую панель вкладок, которая является прокручиваемой и имеет подкачку на каждом элементе панели вкладок. Для этого я использую делегат scrollViewWillEndDragging: withVelocity: targetContentOffset: который отлично работает с одной проблемой.
Как работает мой пейджинг, если contentOffset находится рядом с правильным элементом, то targetContentOffset изменяется на смещение этого элемента. То же самое для левой стороны.
Проблема в том, что всякий раз, когда я нахожусь в левой половине первого элемента и справа от последнего (представление прокрутки работает по горизонтали), оно должно перейти в ContentOffset 0 и смещение содержимого самого правого элемента (минус на экране), но это не так.
Я проверил с отладчиком, а targetContentOffset- > x действительно 0 (в первом случае - слева от самого левого элемента). Поэтому проблема в том, что UIScrollView не прокручивается. Я потерян.
Вот мой реализованный делегат:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset{
NSInteger index = lrintf(targetContentOffset->x/self.tabWidth);
targetContentOffset->x = index * self.tabWidth;
}
Вот диаграмма, поясняющая, что я хочу сделать.
|-------|-------|-------|-------|-------|-------|-------|
| | | | | | | |
| | | | | | | |
|_______|_______|_______|_______|_______|_______|_______|
|_______________________________________|
where it is and i scroll it to the left
<----|
|_______________________________________|
where it would stop
|_______________________________________|
where i want it to stop