我正在开发一个应用程序,其中我有一个可水平滚动的 UIScrollView 全屏,其中包含多个(比如说 3 个)可垂直滚动的 UIScrollViews,每个也是全屏的。它们的位置没有边距,左边的原点是 (0,0)。
每个可垂直滚动的 UIScrollView 都由一个位于另一个之上的按钮组成,每个按钮在单击时都会显示一个 ViewController:
[self presentViewController:someViewController animated:YES completion:nil];
现在这段代码适用于右边的两个 UIScrollView,但左边的有问题:
- 水平 UIScrollView 高度下方的按钮不可点击。因此,如果水平 UIScrollView 的高度为 440px,则任何具有 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];