标签栏控制器中的iPhone ScrollView - ScrollView不会滚动。有人可以帮忙吗?

时间:2011-04-29 10:10:00

标签: objective-c cocoa-touch

我正在尝试将ScrollView添加到标签栏控制器。问题是ScrollView不会滚动,我不能为我的生活找到为什么在Google上。如果我用TextView替换ScrollView,那么滚动它,TableView也是如此。

您可以从此处获取演示此代码的代码:git://gitorious.org/scrollview-in-tabbar-project/scrollview-in-tabbar-project.git

谁能告诉我我做错了什么?请注意,令人讨厌的是,ScrollView内部的TextView会滚动。不确定这是否相关,但是当我选择ScrollView的选项卡时,我没有得到viewWillAppear调用。

2 个答案:

答案 0 :(得分:3)

您尚未设置滚动视图的contentSize。您有责任设置contentSize属性。在您的情况下,您可以将其添加到viewDidLoad中的SecondViewController

-(void)viewDidLoad {
    [super viewDidLoad];
    UIScrollView *scrollView = (UIScrollView *)self.view;
    scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 1024);
}

contentSize的高度设置为适合您需要的高度(可能您必须计算高度以适合您在滚动视图中的放置)。

以下是Apple文档中的示例:Creating Scroll Views in Interface Builder

答案 1 :(得分:0)

根据Erik Tjernlund的回答,我的代码现在看起来像这样:

- (void) viewDidLoad
{
    [super viewDidLoad];

    CGFloat maxDepth = 0;

    for (int i = 0; i < scrollView.subviews.count; i++)
    {
        UIView *aSubview = (UIView *) [scrollView.subviews objectAtIndex:i];
        CGFloat depth = aSubview.frame.origin.y + aSubview.frame.size.height;
        if (depth > maxDepth)
            maxDepth = depth;
    }
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, maxDepth);
}

现在它看起来满足了我的需求。它也可能不是100%正确,我会在我更深入的时候发现它。