У меня есть два горизонтальных UIScrollview
s. Я хочу синхронизировать их прокрутку, когда пользователь перетаскивает пальцы в любой из них. Вот мой код:iOS: Как синхронизировать два UIScrollview
self.topScrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
self.topScrollView.delegate = self;
self.topScrollView.bounces = YES;
self.bottomScrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
self.bottomScrollView.delegate = self;
self.bottomScrollView.bounces = YES;
...
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (scrollView == self.topScrollView)
{
self.bottomScrollView.delegate = nil;
}
else
{
self.topScrollView.delegate = nil;
}
...
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
...
self.topScrollView.delegate = self;
self.bottomScrollView.delegate = self;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
...
self.topScrollView.delegate = self;
self.bottomScrollView.delegate = self;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// Sync the two scroll views
if (scrollView == self.topScrollView)
{
[self.bottomScrollView setContentOffset:scrollView.contentOffset animated:NO];
}
else
{
[self.topScrollView setContentOffset:scrollView.contentOffset animated:NO];
}
...
}
Эти две точки зрения прокрутки делать прокрутку синхронно, однако, проблема все подпрыгивая и замедление ушли. Все движение прокрутки становится действительно жестким. Если я удалю весь синхронизирующий код, то каждый просмотр прокрутки будет работать только индивидуально. Итак, в чем проблема? Или может UIScrollView
не синхронизироваться?
Я попытался добавить свой контроллер в качестве делегата, но назначение разбилось на следующее исключение: «У распознавателя распознавания жестких дисков UIScrollView должен быть свой вид прокрутки в качестве его делегата» –
Я думаю, что всегда могу подклассировать прокрутку и переопределить метод. Круто, я думаю, это должно сработать. –