我正在尝试将ScrollView添加到标签栏控制器。问题是ScrollView不会滚动,我不能为我的生活找到为什么在Google上。如果我用TextView替换ScrollView,那么滚动它,TableView也是如此。
您可以从此处获取演示此代码的代码:git://gitorious.org/scrollview-in-tabbar-project/scrollview-in-tabbar-project.git
谁能告诉我我做错了什么?请注意,令人讨厌的是,ScrollView内部的TextView会滚动。不确定这是否相关,但是当我选择ScrollView的选项卡时,我没有得到viewWillAppear调用。
答案 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%正确,我会在我更深入的时候发现它。