我正在开发一个应用程序。其中有一个水平滚动的UIScrollView,占据整个屏幕,并带有分页功能,其中包含多个(假设为3个)垂直可滚动的UIScrollViews,每个也占据整个屏幕。它们没有边距,左侧的原点是(0,0)。
每个垂直可滚动的UIScrollView都由按钮组成,这些按钮放置在彼此上方。单击每个按钮会呈现一个ViewController:
现在这段代码对于右侧的两个UIScrollViews运行良好,但是对于左侧的一个存在错误:
每个垂直可滚动的UIScrollView都由按钮组成,这些按钮放置在彼此上方。单击每个按钮会呈现一个ViewController:
[self presentViewController:someViewController animated:YES completion:nil];
现在这段代码对于右侧的两个UIScrollViews运行良好,但是对于左侧的一个存在错误:
- 水平UIScrollView下面高度低于440像素的按钮无法点击。所以如果水平UIScrollView的高度为440像素,则任何origin.y> 440的UIButton都无法点击。
- 如果UIScrollView略微向下滚动并单击了一个按钮(不在440像素以下),整个UIScrollView会被“移动”下来,并且在请求的视图控制器呈现时会变得有点卡顿。当此视图控制器被解除时,滚动视图仍然保持较低状态。如果我将其向上滚动并按下一个按钮,它会神奇地跳到应该在的位置。
现在来看有趣的部分!
如果我将左侧UIScrollView的原点更改为(1,0),则此问题消失了!是什么导致了这个问题?
一些附加代码:
[horizontalSV setDelegate:self];
[horizontalSV setContentSize:horizontalContentView.frame.size];
[horizontalSV addSubview:horizontalContentView]; // View containing vertical scroll views, it's set up in IB
[horizontalContentView setFrame:CGRectMake(-1, 0, 961, 440)]; // This is now used for the hack
// Now imagine three of these
firstSVcontent = [[VerticalContentView alloc] init]; // Setting the content view
[firstSVcontent setTitle:title];
[firstSVcontent setButtons:blahblah];
[firstVerticalSV setContentSize:firstSVcontent.view.frame.size]; // Setting vertical scroll view
[firstVerticalSV addSubview:firstSVcontent.view];