滚动视图不水平滚动

Posted

技术标签:

【中文标题】滚动视图不水平滚动【英文标题】:scroll view not scrolling horizontally 【发布时间】:2016-05-18 16:48:48 【问题描述】:

我是 ios 编程新手,我正在尝试将分段控制器添加到滚动视图,因为分段控制器对于屏幕来说太大而滚动视图无法水平滚动。我不知道为什么它不滚动。我想我错过了一些小东西,但我找不到它。有什么帮助!谢谢!

我在 viewDidLoad 中的代码:

scrollView.delegate = self
scrollView.showsHorizontalScrollIndicator = true
self.scrollView.alwaysBounceHorizontal = true
self.scrollView.scrollEnabled = true
self.scrollView.addSubview(segControl)
self.scrollView.pagingEnabled = true
self.scrollView.directionalLockEnabled = false
self.scrollView.contentSize.height = segControl.frame.height
self.scrollView.contentSize.width = segControl.frame.width

【问题讨论】:

segControl.frame.width 的值是多少?是否大于scrollView.frame.width scrollView.contentSize 应该大于 scrollview.frame 才能使其滚动。 是的,我 99% 肯定是的。如果不是,我怎么能做到这一点?或者我怎样才能检查它是否是? 【参考方案1】:

UIScrollView 很容易使用:只要它的contentSize 比它自己的frame.size 大,它就会让您滚动以显示其可见区域之外的子视图。

可能检查segControl.frame.widthscrollView.frame.width 值:segControl 的宽度应该更大,以便滚动视图滚动。

还值得检查scrollView.frame 是否正确并且没有位于屏幕之外的某个地方:例如scrollView.frame.origin.x + scrollView.frame.width 小于屏幕宽度。

查看屏幕截图,scrollView.contentSize.width 应该超过320(因为它占据了模拟器屏幕的整个宽度,在您的情况下是 iPhone 5/5S)。由于您已指定内容宽度输出为216,因此您似乎正在访问错误回调中的帧,该回调在尚未正确设置值时触发。我可以建议移动

scrollView.contentSize.height = segControl.frame.height
scrollView.contentSize.width = segControl.frame.width

部分到viewWillAppear() 而不是viewDidLoad()

【讨论】:

我做了,它更大。我打印了它,这是在调试区域出现的。滚动视图框架宽度:0.0 内容大小:216.0 scrollView.frame 怎么样?它可以吗,而且不会出现在屏幕上吗? 我的滚动视图尾随和前导约束等于超级视图。所以我不这么认为。 内容大小是 216,但这个等式 scrollView.frame.origin.x + scrollView.frame.width 的答案是 300。这是什么意思? 它向左滑动,但我认为这只是反弹。它实际上并没有滚动以显示更多的 seg 控件。

以上是关于滚动视图不水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

滚动视图不水平滚动

水平滚动视图不滚动

(垂直)滚动视图包含另一个(水平)滚动视图 - Kivy

ios 8 - 水平滚动视图中的按钮拦截平移事件 - 滚动不起作用

我的水平滚动视图不起作用

如何与作为滚动视图子视图的水平滚动视图交互?