我觉得我已经触及了阻止这个的每一个可能的原因,但是我的故事板中有一个UIScrollView连接了一个插座,在viewDidLoad中我设置了contentSize以便我可以滚动(是的比我的框架大大小)!
然而,无论我改变什么,我都无法滚动!我的滚动视图中有几个文本字段并且启用了弹跳,因此我可以看到在使用我的子视图测试其上下移动时,但无论我将contentSize设置为什么,我都无法滚动。
我可能遗失的任何东西/应该检查?这是UIScrollView在故事板中使用的已知问题吗?
甚至更奇怪的是,我可以这样做:
[scrollView setBackgroundColor:[UIColor blueColor]];
我有一个蓝色滚动视图!但是设置内容大小失败。
我唯一的代码(否则scrollview只是放入了故事板视图控制器):
-(void)viewDidAppear:(BOOL)animated
{
[scrollView setContentSize:CGSizeMake(320, 640)];
}
记录帧,按预期出现:
width: 320.00
height: 504.00
原来在我的故事板中删除滚动视图的任何子视图让它滚动得很好。如果我通过故事板添加任何子视图,即使是空白的全新UIButton,它也不会应用contentSize / allow滚动。
答案 0 :(得分:47)
使用ViewDidLayoutSubview
- (void)viewDidLayoutSubviews
{
[_scrollView setContentSize:CGSizeMake(320, 500)];
}
UIViewController的方法调用顺序如下
答案 1 :(得分:5)
viewDidLoad不是放置依赖于IB对象的帧大小的代码的好地方。如果在viewDidLoad中记录滚动视图的contentSize,您将看到它是(0,0)。将代码(您设置内容大小的位置)移动到viewDidAppear,它将正常工作。
答案 2 :(得分:4)
检查这些
例如
scrollView.contentSize = CGSizeMake(320, 640);
我的故事板对于scrollview [working]
看起来像这样
答案 3 :(得分:3)
我在 viewDidAppear 中有完全相同的代码行,没有工作
将其移至 viewDidLayoutSubviews 并正常工作。
[scrollView setContentSize:CGSizeMake(320, 500)];
感谢trick14的答案。
答案 4 :(得分:3)
问题很可能出在Auto Layout上。使用AutoLayout时,UIScrollView需要特别注意。
快速修复 - 将其中一个滚动的子视图绑定到其超级视图的顶部和底部空间(滚动视图)。
长篇故事: 有关SO的问题: UIScrollView not scrolling regardless of large contentSize, UIScrollView will not scroll, even after content size set, UIScrollView doesn't use autolayout constraints
Apple的文档: https://developer.apple.com/library/ios/technotes/tn2154/_index.html
答案 5 :(得分:1)
Trip14的回答对我有用。在swift中,我把它编码为:
override func viewDidLayoutSubviews() {
(self.view as! UIScrollView).contentSize = CGSizeMake(600, 600)
}
答案 6 :(得分:0)
这似乎是一个类似的问题。 Other Story
故事板中的自动布局或约束可能存在问题。
答案 7 :(得分:0)