Я сделал что-то «похожее», когда у меня было 4 scrollView, включенных в родительское представление.
Я поместил scrollView внутри UIView, этот UIView был передан делегату из его parentView, который был видом, который отслеживал все scrollViews. UIView, содержащий scrollVIew, реализовал UIScrollViewDelegate
и этот метод;
- (void)scrollViewDidScroll:(UIScrollView *) theScrollView {
[self.delegate scrolling:[self.scrollView contentOffSet]];
}
Теперь родительский вид делал это на всех scrollViews:
- (void) scrolling:(CGFloat) offset {
for(UIScrollView *s in self) {
[s setContentOffset:offset animated:YES];
}
}
Конечно, это немного напрягает процессор, но прокрутка нескольких представлений будет при любых обстоятельствах: /
Надеюсь, это было что-то в направлении того, что вам нужно, и что это имело какой-то смысл.
Добавлено:
Я взял 8 различных путей и много массового хаоса, прежде чем заставил его работать. Я отказался от подхода touchchedBegan рано, просто нет способа написать что-то, что приближает алгоритмы прокрутки, пролистывания, прокрутки в Apple.
Я не знаю, будут ли просмотр таблиц и прокрутки "красть" события касания друг друга, но, как я понимаю из вашего описания, вы заставили эту часть работать.
Последующая идея для облегчения использования процессора. добавьте каждое представление прокрутки в ячейку, установите его тег = 14, теперь, когда прокрутка запрашивается только для всех видимых ячеек, запрашивается viewWithTag = 14, установите для этого contentOffset. Сохраните смещение содержимого глобально, чтобы вы могли назначить его ячейкам, которые прокручиваются на экране в cellForRowAtIndexPath
.
Так что установите offSet в глобальное свойство, в cellForRowAtIndexPath
найдите представление с тегом = 14, установите его смещение. Таким образом, вам даже не нужна ссылка на scrollViews только для делегата.