UIScrollView 不会随着里面的内容视图滚动

Posted

技术标签:

【中文标题】UIScrollView 不会随着里面的内容视图滚动【英文标题】:UIScrollView won't scroll with content view inside 【发布时间】:2016-09-10 10:54:18 【问题描述】:

UIScrollView 有问题。我有这样的设置:

我在第一张图片中固定了一个滚动视图,包括尾随、前导、顶部和底部约束。在第二张图片中,我在滚动视图中放置了一个相同尺寸的 UIView(我计划在其中添加内容)。它固定在滚动视图上,并且水平和垂直居中。当我现在尝试滚动时,似乎根本没有注册任何触摸。我设置了一个大的内容大小:

override func viewDidAppear(animated: Bool) 
        super.viewDidAppear(animated)

        print("The scroll views height is \(scrollView.frame.size.height)")
        scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: 1000)
        print("The scroll view content height is: \(scrollView.contentSize.height)")
    

我还尽可能地启用了用户交互。我正在使用委托方法scrollViewDidScroll(scrollView: UIScrollView) 来检查是否正在注册触摸并且它们根本没有。我在这里做错了什么?

【问题讨论】:

试试这个,教程在objective c,但概念是一样的,iosfirst.blogspot.com/2016/08/… @kex 你的问题解决了与否 【参考方案1】:

希望这会对你有所帮助,许多人都面临这个问题,我希望我的解决方案能够为开发人员提供帮助。

您的视图层次结构应该是这样的:-

View (main view of my UIViewController) – with
-ContainerScrl
--Scroll View (UIScrollView)
---ViewInsideScrl 
----Content1 
----Content2 (etc) 

因为,ScrollView 只有在其 Content Size 大于 Scrollview 的 frame 时才会滚动。

现在小鬼来了。部分约束应该是这样的:-

对 ContainerScrl 进行约束,然后 Scroll View 应该从所有方向固定到 ContainerScrl 并且 ViewInsideScrl 应该固定到 Scroll View。现在它会给出类似可滚动内容大小歧义的警告。

看,如果你给 ViewInsideScrl 的宽度和高度等约束应该等于 ContainerScrl,所有约束错误消息都会消失,但它不会滚动,因为框架等于内容大小,假设你希望它滚动在水平方向,然后只给两个视图提供相等的高度约束,并给 ViewInsideScrl 宽度约束 w.r.t ContainerScrl 之类的比例约束 ViewInsideScrl = 2* ContainerScrl ; 它会使滚动的内容比框架更大。

让我们试试这个,如果问题没有得到解决,我们会进一步研究。

【讨论】:

以上是关于UIScrollView 不会随着里面的内容视图滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 不会作为子视图在里面滚动

滚动 uiscrollview 时淡化 UITextView

UIScrollView(滚动视图)

将视图加载到 UIScrollView 并让里面的内容正常工作

尽管内容大小正确,但 UIScrollview 不会滚动; textview 子视图框架也表现得很奇怪

UIScrollView 高度不会根据视图大小动态更新?