一行代码解决横向ScrollView嵌套冲突

555 阅读1分钟

如果两个横向滚动的ScrollView进行嵌套,会导致只有子视图可以滑动,而父视图无法滑动,网上有很多解决手势冲突的方案,但是都比较复杂,如果只是横向滚动的两个ScrollView冲突,可以使用下面方式,一行代码就可以完美解决冲突: 只需要将子视图ScrollView的contentSize.height设置为0,就可以完美解决问题。

    UIScrollView *scrollView = [UIScrollView new];

    scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

    scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height);

    scrollView.pagingEnabled = YES;

    [self.view addSubview:scrollView];

    

    {

        UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

        redView.backgroundColor = [UIColor redColor];

        [scrollView addSubview:redView];

        

        UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height)];

        greenView.backgroundColor = [UIColor greenColor];

        [scrollView addSubview:greenView];

\


    }

    

    UIScrollView *scrollView1 = [UIScrollView new];

    scrollView1.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

    scrollView1.contentSize = CGSizeMake(self.view.frame.size.width * 2, 0);

    scrollView1.pagingEnabled = YES;

    [scrollView addSubview:scrollView1];

    

    {

        UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

        blackView.backgroundColor = [UIColor blackColor];

        [scrollView1 addSubview:blackView];

        

        UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height)];

        blueView.backgroundColor = [UIColor blueColor];

        [scrollView1 addSubview:blueView];

\


    }