2015-02-20 3 views
1

Я хотел бы использовать элемент управления с вкладкой, скользящей страницы, аналогичный приложению Beats Music, где два зависимых видовых прокрутки взаимодействуют друг с другом, чтобы перемещаться по страницам. В начале анимации я просматриваю фактические страницы. Когда он прокручивается очень быстро, я на самом деле прокручиваю вкладки вверху. Это похоже на то, как работает многозадачный переключатель приложений iOS 7/8.Как реализовать элемент управления с вкладками

Я осмотрел, но не могу найти примеры, где пользователь может прокручивать и прокрутки. Обычно контроллер содержимого перемещает вкладки, как в этом репо: https://github.com/daria-kopaliani/DAPagesContainer

Я немного потерял, как я сам это реализую. Я не могу просто поместить два scrollviews в контейнер и реализовать scrollViewDidScroll на обоих прокрутках, потому что это создаст цикл.

Любые идеи?

enter image description here

+0

выглядит как 2 scrollviews с включенным пейджингом, когда один прокручивает, запускает другой, чтобы прокручивать –

+0

Я не понимал, почему вы думаете, что это создаст цикл. – Segev

+0

@Segev, прокрутка верхнего прокрутки должна прокручивать нижний прокрутки и наоборот. Мой инстинкт заключался в том, чтобы просто прослушивать прокручиваемую активность в 'scrollViewDidScroll' и соответственно настраивать другое прокручивание. Однако при настройке другого scrollview будет вызван тот же метод делегата, и он попытается прокрутить прокрутку, с которой пользователь уже взаимодействует. Имеют смысл? – djibouti33

ответ

0

Вы можете установить BOOL или тег, чтобы определить, кто является Scrollview пользователь перетаскивает и тем самым управлять другим Scrollview без зацикливания назад и вперед.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.topScrollView.tag = 1; 
    self.contentScrollView.tag = 2; 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    self.scrollViewInControler = scrollView.tag; 
} 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if(scrollView.tag == self.scrollViewInControler && scrollView.tag == 1) 
    { 
     //move contentScrollView accordingly 
    } 
    else //... 

} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
        willDecelerate:(BOOL)decelerate 
{ 
    self.scrollViewInControler = 0; 
} 

Я уверен, что есть способы улучшить это, но это основная идея.

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