为什么我的内容视图在我的滚动视图内不响应
问题描述:
我已经在滚动视图内创建了一个设置区域,并根据我的内容视图设置了滚动视图的内容大小。 当我在模拟器或屏幕较小的设备上运行时,我发现屏幕边界外的视图对触摸没有响应。我有几个开关,如果从一开始就可以看到,它们将起作用。 我发现很多其他人有这个问题,但没有解决方案为我工作。尝试将内容视图设置为scrollview的内容大小,反之亦然是我想要做的,因为如果我设置“剪辑到边界”,我可以清楚地看到内容不可见。 如何设置整个滚动视图以响应触摸。 即时通讯使用故事板自动布局,但也许我应该把它全部在代码?为什么我的内容视图在我的滚动视图内不响应
scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 900)
contentView.bounds.size = scrollView.contentSize
scrollView.addSubview(contentView)
答
将UIScrollView
与自动布局一起使用时,最好让自动布局计算出内容大小。 (在我看来,这也是处理滚动视图的最简单方法)
但是,首先在处理它们时,滚动视图本质上有点混乱。我不知道你的视图是什么样的,但我有几个可能有用的提示:
- 任何需要滚动的东西都应该放在某种容器视图中。根据你上面的代码,我认为你已经用
contentView
完成了。 - 将所有约束从可滚动内容设置到该容器视图。完成后,将容器视图中所有边的约束设置为嵌入的滚动视图。
- 如果您只希望用户能够垂直滚动,请从滚动视图中创建等宽度约束到容器视图。 (如果您希望用户只能水平滚动,请将两个视图设置为具有相同的高度)。
- 确保您的滚动视图在其超级视图中正确定位,并且具有正确的约束以将其保留在适当的位置。
这几乎是我每次必须使用滚动视图时所做的。您不必在代码中设置任何内容大小,并且所有内容均由自动布局处理(因此无需任何额外的工作即可支持旋转和其他屏幕大小)。
在xib中可以看到这些指针的一个例子here。并且可以找到此方法的博客文章教程here。
编辑:添加源
所以你尝试通过编码做这件事或自动版式 –
我已经做了所有通过自动布局 –
但在代码中设置contentsize。 –