swift - 为什么我的 ScrollView 中的内容 View 没有响应

标签 swift scrollview

我在 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 时,它们本身就有点令人困惑。我不知道你的观点是什么样的,但我有一些建议可能会有所帮助:

  1. 任何需要滚动的内容都应该出现在某种容器 View 中。根据上面的代码,我认为您已经使用 contentView 做到了这一点。
  2. 设置从可滚动内容到该容器 View 的所有约束。完成后,设置从容器 View 到它嵌入的 ScrollView 的所有边缘的约束。
  3. 如果您只希望用户能够垂直滚动,请创建从 ScrollView 到容器 View 的等宽约束。 (如果您希望用户只能水平滚动,请将两个 View 设置为具有相等的高度)。
  4. 确保您的 ScrollView 在其 super View 中正确定位,并具有正确的约束以使其保持在适当的位置。

这几乎就是我每次必须使用 ScrollView 时所做的事情。您不必在代码中设置任何内容大小,一切都由自动布局处理(因此支持旋转和其他屏幕尺寸,无需任何额外的工作)。

xib 中这些指针的示例可以参见 here 。并且可以找到该方法的博客文章教程here .

编辑:添加来源

关于swift - 为什么我的 ScrollView 中的内容 View 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43590098/

相关文章:

带有可以滚动到屏幕外的非粘性标题行的 Android ListView

ios - 添加本地动态框架后 Cocoapods Mach-O 链接器错误

ios - 无法从 SKPhysicsJoint 向下转换为 SKPhysicsJointPin (SpriteKit)

ios - swift 中的统一响应/错误处理

android - 在 ScrollView 中滚动到特定 View

android - ScrollView 内具有可扩展 textView 的垂直居中 ConstraintLayout (滚动/居中问题)

Android ScrollView 性能

python - (垂直)ScrollView 包含另一个(水平) ScrollView - Kivy

ios - 如何隐藏 UITabbarIcon?

swift - 协议(protocol)中的 var 作为特定协议(protocol)