2013-07-22 2 views
0

Я искал, как вложить UIScrollViews. Кажется, что это должно быть так же просто, как добавление внутренних прокруток с помощью addSubview: просмотра прокрутки контейнера. У меня есть все, что отображается визуально правильно, но функциональность внутренних просмотров прокрутки не существует, несмотря на то, что они снабжают их правильными кадрами и размерами контента. Мой код ниже показывает, что я до сих пор. Прокручивается только свиток внешнего прокрутки. Я хочу, чтобы внешний вид прокрутки перемещался влево и вправо, и каждый внутренний вид прокрутки контролирует вертикальную прокрутку их связанного содержимого страницы.iOS Вложенные UIScrollViews не отвечают

self.containerScroll = [[UIScrollView alloc]init]; 
self.containerScroll.frame = CGRectMake(0,(self.headerView.frame.size.height + self.pageControl.frame.size.height),screenWidth, (screenHeight - (self.headerView.frame.size.height + self.pageControl.frame.size.height))); 
self.containerScroll.backgroundColor = [UIColor clearColor]; 
self.containerScroll.alpha = 1; 
self.containerScroll.pagingEnabled = YES; 
self.containerScroll.contentSize = CGSizeMake(self.containerScroll.bounds.size.width*3,1); 
self.containerScroll.bounces = NO; 
self.containerScroll.delegate = self; 
[self.view addSubview:self.containerScroll]; 

self.page1Scroll = [[UIScrollView alloc]init]; 
self.page1Scroll.frame = CGRectMake(0,0,self.containerScroll.bounds.size.width,self.containerScroll.bounds.size.height); 
self.page1Scroll.backgroundColor = [UIColor redColor]; 
self.page1Scroll.alpha = 1; 
[self.page1Scroll addSubview:self.feedPageVC.view]; 
self.page1Scroll.contentSize = CGSizeMake(320,500); 
self.page1Scroll.delegate = self; 
[self.containerScroll addSubview:self.page1Scroll]; 

self.page2Scroll = [[UIScrollView alloc]init]; 
self.page2Scroll.frame = CGRectMake(self.containerScroll.bounds.size.width,0,self.containerScroll.bounds.size.width,self.containerScroll.bounds.size.height); 
self.page2Scroll.backgroundColor = [UIColor greenColor]; 
self.page2Scroll.delegate = self; 
[self.containerScroll addSubview:self.page2Scroll]; 

self.page3Scroll = [[UIScrollView alloc]init]; 
self.page3Scroll.frame = CGRectMake(self.containerScroll.bounds.size.width*2,0,self.containerScroll.bounds.size.width,self.containerScroll.bounds.size.height); 
self.page3Scroll.backgroundColor = [UIColor blueColor]; 
[self.page3Scroll addSubview:self.detailsPageVC.view]; 
self.page3Scroll.contentSize = CGSizeMake(320,500); 
self.page3Scroll.delegate = self; 
[self.containerScroll addSubview:self.page3Scroll]; 

ответ

0
self.containerScroll.contentSize = CGSizeMake(self.containerScroll.bounds.size.width*3,1); 

Похоже, высота контента устанавливается в 1. Если ребенок больше, чем его родитель, он не будет работать правильно (работает так же для кнопок).

Кроме того, убедитесь, что вы знаете, какой scrollview вы обрабатываете в методах делегата. Все прокрутки будут обрабатываться одним и тем же способом, и это может вызвать проблемы.

+0

Я попытался настроить размер содержимого прокрутки контейнера на 0, 1, == subscroll, subscroll. Изменение размера контента не имеет значения. Суб-прокрутки еще не прокручиваются. – Sethypie

+0

Размер содержимого контейнера должен быть шириной всех подзонов и видимой высотой надзоров. Размер содержимого вложенных представлений должен быть шириной контейнера (а не шириной содержимого) и высотой их содержимого. Прокрутки не будут прокручиваться, если размер содержимого равен фактическому размеру. Поэтому, если ваш subview имеет большую высоту, чем контейнер, или если высота вашего подвидности равна его высоте содержимого, она не будет прокручиваться. – JeffRegan

+2

Я нашел проблему. Страницы, добавляемые в представления прокрутки, используют автозапуск. Добавление такого вида в представление прокрутки вызывает просмотр прокрутки, чтобы попытаться вычислить его размер содержимого в зависимости от размера добавленного представления. Поскольку я добавил subview AFTER, определяя размер содержимого вручную, это ручное определение было перезаписано. – Sethypie

Смежные вопросы