iOS scrollview不能滑动的几个原因及解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS scrollview不能滑动的几个原因及解决方法相关的知识,希望对你有一定的参考价值。

参考技术A 前几天在开发过程中遇到了scrollview不能滑动的问题,然后就顺便总结了以下的几个原因:

1、contentSize 这个属性,比uiscrollview的frame要小, 无需滚动, 自然就滚动不了。 scrollenabled 这个属性,标识着是否允许滚动,要言设成yes

2、如果这个scrollView是在IB里面生成的话,还得手动设置它的contentSize,并且不能在initWithNibName:bundle:里面设置,因为:

The nib file you specify is not loaded right away. It is loaded the first time the view controller’s view is accessed. If you want to perform additional initialization after the nib file is loaded, override the viewDidLoad method and perform your tasks there.

3、在self.view上添加scrollview 能正常滚动,但再次添加其他的view的时候,就不能正常滚动了,必须用下面的一个方法才行,很好用。

附加:

这个方法在controller的的子视图的position和size被改变的时候被调用。
在view 已经被设计好了它的subviews并且还没有被展示在屏幕上时候,可以调用此方法改变这个view。
关键点是改变边界。任何依赖于bounds,并且需要去完成的操作都应该放在viewDidLayoutSubviews中,而不是viewDidLoad或viewWillAppear中。
因为view的frame和bounds直到Auto Layout 已经完成工作的时候才会被确定,所以在执行完Auto Layout之后会调用此方法。

iOS开发中解决UITableView嵌套ScrollView(UICollectionView)的手势冲突

参考技术A 之前写过类似的( https://www.jianshu.com/p/b867ed4ee9e3 ),这里就当温故而知新吧!

一个tableView上的某个cell(后面用cellA代替)上有一个scrollView,该scrollView上添加了几个tableView。要求在cellA所在的section的sectionHeader滑动到顶部的时候cellA上的scrollView上的几个tableView可以滑动,否则不能滑动。

1.需要底部的tableView能够同时响应多个手势(这样在滑动子tableView时候,底部的tableView也能滑动)

2.在最开始的时候底部tableView能够滑动,scrollView上的tableView不能滑动。
3.当cellA所在的section的sectionHeader滑动到顶部的时候,scrollView上的几个tableView可以滑动。
4.当scrollView上的tableView在Y方向的偏移量为0的时候,scrollView上tableView不能滑动,底部的tableView能滑动。

1.监听底部tableView的偏移量,从而设置该tableView以及scrollView上几个tableView是否能滑动

2.设置scrollView上几个tableView是否能滑动

3.监听scrollView上几个tableView的偏移量,从而通知底部tableView是否可滑动

4.接收通知,从而设置底部tableView以及scrollView上几个tableView是否能滑动

https://github.com/yangguanghei/table-scroll

以上是关于iOS scrollview不能滑动的几个原因及解决方法的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView的几个要点总结

iOS 设计中关于UIScrollViewDelegate的几个代理方法的简单介绍

iOS多手势冲突问题

(转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

iOS8 UICollectionView横向滑动demo

iOS ScrollView嵌套TableView联动滑动的实现方案