如何防止同时滚动多个UIScrollView对象?

时间:2016-02-14 08:10:00

标签: ios objective-c swift uiscrollview

这是我的情况: 我有2个UIScrollView对象。两个都启用了水平滚动。他们的框架没有重叠。两个对象都是同一视图的子视图:

 ..................................................
 |                                                |
 |                      UIView                    |
 |                                                |
 |                                                |
 |    ........................................    |
 |    |                                      |    |
 |    |             UIScrollView 1           |    |
 |    |                                      |    |
 |    |......................................|    |
 |                                                |
 |    ........................................    |
 |    |                                      |    |
 |    |             UIScrollView 2           |    |
 |    |                                      |    |
 |    |......................................|    |
 |                                                |
 |................................................|

问题是它们都可以同时滚动 如果已经开始在第二个对象中滚动,如何阻止滚动第一个UIScrollView对象?

1 个答案:

答案 0 :(得分:1)

func scrollViewDidScroll(scrollView: UIScrollView) {
    [tableView1, tableView2].forEach { if scrollView != $0 { $0.scrollEnabled = false } }
}

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
    [tableView1, tableView2].forEach { $0.scrollEnabled = true }
}

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    [tableView1, tableView2].forEach { $0.scrollEnabled = true }
}

你可能需要对它进行微调,因为还有待考虑。

最初我想用:

tableView2.scrollEnabled = scrollView == tableView1

但有时它仍会滚动(也许它不会在实际设备上),所以我使用第二种方法来检查滚动何时结束。