我在 ScrollView 内创建了一个设置区域,并根据我的内容 View 设置 ScrollView 的内容大小。 当我在模拟器或小屏幕尺寸的设备中运行时,我发现屏幕边界之外的 View 不响应触摸。我有一些开关,如果它们从一开始就可见的话,它们就可以工作。 我发现很多其他人也遇到这个问题,但没有一个解决方案对我有用。尝试将内容 View 设置为 ScrollView 的内容大小,反之亦然是我想要做的,因为如果我设置“剪辑到边界”,我可以清楚地看到内容不可见。 如何设置整个 ScrollView 响应触摸。 我正在使用 Storyboard自动布局,但也许我应该将其全部设置在代码中?
scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 900)
contentView.bounds.size = scrollView.contentSize
scrollView.addSubview(contentView)
最佳答案
当将 UIScrollView
与自动布局一起使用时,最好让自动布局确定内容大小。 (这也是我认为处理 ScrollView 最简单的方法)
但是,在初次处理 ScrollView 时,它们本身就有点令人困惑。我不知道你的观点是什么样的,但我有一些建议可能会有所帮助:
- 任何需要滚动的内容都应该出现在某种容器 View 中。根据上面的代码,我认为您已经使用
contentView
做到了这一点。 - 设置从可滚动内容到该容器 View 的所有约束。完成后,设置从容器 View 到它嵌入的 ScrollView 的所有边缘的约束。
- 如果您只希望用户能够垂直滚动,请创建从 ScrollView 到容器 View 的等宽约束。 (如果您希望用户只能水平滚动,请将两个 View 设置为具有相等的高度)。
- 确保您的 ScrollView 在其 super View 中正确定位,并具有正确的约束以使其保持在适当的位置。
这几乎就是我每次必须使用 ScrollView 时所做的事情。您不必在代码中设置任何内容大小,一切都由自动布局处理(因此支持旋转和其他屏幕尺寸,无需任何额外的工作)。
xib 中这些指针的示例可以参见 here 。并且可以找到该方法的博客文章教程here .
编辑:添加来源
关于swift - 为什么我的 ScrollView 中的内容 View 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43590098/