为什么我的滚动视图中的内容视图没有响应

时间:2017-04-24 13:56:57

标签: swift scrollview

我在scrollview中创建了一个设置区域,并根据我的内容视图设置了scrollview的内容大小。 当我在具有小屏幕尺寸的模拟器或设备中运行时,我发现屏幕边界之外的视图没有响应触摸。我有一些开关可以工作,如果它们从一开始就可见。 我发现很多其他人都有这个问题,但没有一个解决方案适合我。尝试将内容视图设置为scrollview的内容大小,反之亦然,这是我想要做的,因为如果我设置“剪辑到边界”,我可以清楚地看到内容不可见。 如何设置整个scrollview以响应触摸。 即时通讯使用故事板自动布局,但也许我应该在代码中设置它?

scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 900)

    contentView.bounds.size = scrollView.contentSize
    scrollView.addSubview(contentView)

1 个答案:

答案 0 :(得分:0)

UIScrollView s与自动布局结合使用时,最好让autolayout计算出内容大小。 (在我看来,这也是处理滚动视图的最简单方法)

但是,滚动视图在最初处理它们时本质上有点混乱。我不知道你的观点是什么样的,但我有一些可能有帮助的指针:

  1. 任何需要滚动的内容都应该放在某种容器视图中。根据您上面的代码,我认为您已经使用contentView
  2. 完成了该操作
  3. 将所有约束从可滚动内容设置到该容器视图。完成后,将容器视图中所有边的约束设置为嵌入其中的滚动视图。
  4. 如果您只希望用户能够垂直滚动,请从滚动视图到容器视图创建相等的宽度约束。 (如果您希望用户只能水平滚动,请将两个视图设置为具有相同的高度。)
  5. 确保滚动视图在其超级视图中正确定位,并具有正确的约束以使其保持原位。
  6. 这几乎是我每次使用滚动视图时所做的事情。您不必在代码中设置任何内容大小,并且所有内容都由自动布局处理(因此支持旋转和其他屏幕尺寸而无需任何额外工作)。

    可以看到xib中这些指针的示例here。可以找到此方法的博客文章教程here

    编辑:添加了来源