UIScrollView中的子视图不会根据内容大小调整大小

时间:2015-10-08 14:36:02

标签: ios objective-c uiscrollview

我正在使用Xcode 7.0并在iOS 8上进行测试。这是我的视图层次结构:

  • 滚动视图
    • 内容视图
      • 一些标签和观点
      • 地址视图
        • 许多文字字段,垂直排列

内容视图将以下约束设置为滚动视图:

  • 龙头,
  • 后缘,
  • 对齐中心x和
  • 对齐中心。

滚动视图的内容大小设置如下:

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [self.scrollView setContentSize:CGSizeMake(CGRectGetWidth(self.scrollView.bounds), CGRectGetMaxY(self.viewAddress.frame) + kICMarginStandard)];
}

但是,“内容”视图不会调整为滚动视图的内容高度,而只会调整为屏幕高度。即使滚动视图正确滚动并且可以看到我的文本字段,如果我点击它们也不会接收到触摸事件。

这是一个屏幕截图,其中内容滚动到底部,内容视图具有红色背景颜色。选择国家/地区接收触摸事件,但是zip,城市和地址文本字段不会:

Scrolled to bottom

如何解决这个问题,以便我的所有文本字段都能正常工作?

1 个答案:

答案 0 :(得分:0)

由于您使用自动布局,因此无需手动设置scrollView的contentSize。

您只需要在scrollView的子视图之间正确设置约束,并为scrollView的边缘添加约束,例如:

scrollView.Top- | -contentView.Top- | -subview- | -subview- | -...- | -contentView.Bottom- | -scrollView.Bottom

左右边缘相同,因此scrollView的内容大小将自动计算。

检查两次子视图之间的约束。