通过滚动1控制2 DMCircularScrollViews

时间:2015-06-20 18:50:07

标签: ios objective-c uiscrollview

我正在使用此处的DMCircularScrollView库:https://github.com/malcommac/DMCircularScrollView

图书馆所完成的是一个无限的"滚动视图循环回到开头。

我有2个DMCircularScrollViews,每个都有3个项目。但是,每个项目的宽度是不同的。在第一个中,它们都是scrollViewWidth / 2,在第二个中它们等于滚动视图的宽度。如何通过滚动第一个滚动视图来控制第二个滚动视图?即:我移动第一个滚动视图以选择第二个项目,当我移动第一个时,如何自动使第二个滚动视图动画化?

在阅读关于链接到常规UIScrollViews的其他帖子后,我尝试实现委托方法scrollViewDidScroll并设置第二个滚动视图的内容偏移量,但该方法在这种情况下不起作用。

1 个答案:

答案 0 :(得分:0)

我明白了!我实现了以下方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    NSLog(@"Test: %f", testScrollView.scrollView.contentOffset.x);

    if(scrollView == threePageScrollView.scrollView) {
        //[testScrollView relayoutPageItems:NSUIntegerMax];
        [testScrollView reloadData];
        NSLog(@"Third: %f", threePageScrollView.scrollView.contentOffset.x);
        [testScrollView.scrollView setContentOffset:CGPointMake(threePageScrollView.scrollView.contentOffset.x*2, threePageScrollView.scrollView.contentOffset.y) animated:NO];
        [testScrollView reloadInputViews];

    }

}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)sv {

    [testScrollView relayoutPageItems:NSUIntegerMax];

    if(sv == threePageScrollView.scrollView) {

        [testScrollView reloadData];
        NSLog(@"Third: %f", threePageScrollView.scrollView.contentOffset.x);
        [testScrollView.scrollView setContentOffset:CGPointMake(threePageScrollView.scrollView.contentOffset.x*2, threePageScrollView.scrollView.contentOffset.y) animated:NO];
        [testScrollView reloadInputViews];

    }
    //[self delegateSelector:@selector(scrollViewDidEndScrollingAnimation:) toDelegateWithArgument:sv];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sv
{
    [testScrollView relayoutPageItems:NSUIntegerMax];
    //[self delegateSelector:@selector(scrollViewDidEndDecelerating:) toDelegateWithArgument:sv];
    testScrollView.currentPageIndex = threePageScrollView.currentPageIndex;
}

threePageScrollView是我滚动的那个,而testScrollView是通过代码动画的那个。