1

我有两个 UIScrollViews,如果用户在滚动视图中滚动,我想让另一个滚动视图滚动。我已经阅读了一个解决方案,该解决方案涉及将 pangesturerecognizer 从最初平移的滚动视图传递到另一个滚动视图,但如果我这样做,原始滚动视图根本不会滚动。

我发现,有一个委托方法

(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

但是如果我尝试连接滚动视图的 pangesturerecognizers 的代表,我的应用程序就会崩溃。

希望可以有人帮帮我。

4

1 回答 1

1

您只需要更新第二个 ScrollView 的 Bounds

就像是 :-

CGRect updateTheViewWithBounds = viewToUpdate.bounds;
updateTheViewWithBounds.origin = scrolledView.contentOffset;
viewToUpdate.bounds = updateTheViewWithBounds;

这将完成工作。

从评论中可以看出,我将举一个小例子。

在 UiViewController 上创建两个滚动视图

scrollOne = [[UIScrollView alloc] init];
    [scrollOne setBackgroundColor:[UIColor greenColor]];
    [scrollOne setFrame:CGRectMake(10, 20, 200, 300)];
    [scrollOne setContentSize:CGSizeMake(600, 600)];
    scrollOne.delegate = self;

    scrollTwo = [[UIScrollView alloc] init];
    [scrollTwo setBackgroundColor:[UIColor redColor]];
    [scrollTwo setFrame:CGRectMake(230, 20, 200, 300)];
    [scrollTwo setContentSize:CGSizeMake(600, 600)];
    scrollTwo.delegate = self;


    [self.view addSubview:scrollOne];
    [self.view addSubview:scrollTwo];

符合 UIScrollView Delegates 并实现相同。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if([scrollView isEqual:scrollOne])
    {
        CGRect updateTheViewWithBounds = scrollOne.bounds;
        updateTheViewWithBounds.origin = scrollOne.contentOffset;
        scrollTwo.bounds = updateTheViewWithBounds;
        [scrollTwo flashScrollIndicators];
    }
    else if([scrollView isEqual:scrollTwo])
    {
        CGRect updateTheViewWithBounds = scrollTwo.bounds;
        updateTheViewWithBounds.origin = scrollTwo.contentOffset;
        scrollOne.bounds = updateTheViewWithBounds;
        [scrollOne flashScrollIndicators];
    }
}

滚动上述任何滚动视图都会滚动滚动视图。

于 2013-03-14T11:59:43.593 回答