如果两个横向滚动的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];
\
}