为什么我的内容视图在我的滚动视图内不响应

问题描述:

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

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

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

所以你尝试通过编码做这件事或自动版式 –

+0

我已经做了所有通过自动布局 –

+0

但在代码中设置contentsize。 –

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

但是,首先在处理它们时,滚动视图本质上有点混乱。我不知道你的视图是什么样的,但我有几个可能有用的提示:

  1. 任何需要滚动的东西都应该放在某种容器视图中。根据你上面的代码,我认为你已经用contentView完成了。
  2. 将所有约束从可滚动内容设置到该容器视图。完成后,将容器视图中所有边的约束设置为嵌入的滚动视图。
  3. 如果您只希望用户能够垂直滚动,请从滚动视图中创建等宽度约束到容器视图。 (如果您希望用户只能水平滚动,请将两个视图设置为具有相同的高度)。
  4. 确保您的滚动视图在其超级视图中正确定位,并且具有正确的约束以将其保留在适当的位置。

这几乎是我每次必须使用滚动视图时所做的。您不必在代码中设置任何内容大小,并且所有内容均由自动布局处理(因此无需任何额外的工作即可支持旋转和其他屏幕大小)。

在xib中可以看到这些指针的一个例子here。并且可以找到此方法的博客文章教程here

编辑:添加源