在水平UIScrollView中多个垂直滚动UIScrollViews

时间:2012-07-08 20:56:41

标签: ios ios5

我正在开发一个应用程序,其中我有一个可水平滚动的UIScrollView全屏,分页包含多个(比方说3个)可垂直滚动的UIScrollViews,每个也都是全屏。它们的位置没有边距,左边的原点是(0,0)。

每个可垂直滚动的UIScrollView包含一个放在另一个上面的按钮,每个按钮点击时,都会显示一个ViewController:

[self presentViewController:someViewController animated:YES completion:nil];

现在这个代码适用于两个正确的UIScrollViews,但它的左边有一个错误:

  • 水平UIScrollView的高度下方的按钮不可点击。因此,如果水平UIScrollView的高度为440px,则任何带有origin.y>的UIButton都是如此。 440无法点击。
  • 如果稍微向下滚动UIScrollView并单击一个按钮(不低于440px),整个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];

1 个答案:

答案 0 :(得分:2)

差不多一年后我就解决了这个问题!

问题是,我在XIB文件中执行了大部分视图管理,然后我只是在viewDidLoad方法中读取了这些内容视图和滚动视图并将它们组合在一起。

现在我已经重写了我的代码,以编程方式创建所有滚动视图和内容视图,一切正常运行。