这是我的情况: 我有2个UIScrollView对象。两个都启用了水平滚动。他们的框架没有重叠。两个对象都是同一视图的子视图:
..................................................
| |
| UIView |
| |
| |
| ........................................ |
| | | |
| | UIScrollView 1 | |
| | | |
| |......................................| |
| |
| ........................................ |
| | | |
| | UIScrollView 2 | |
| | | |
| |......................................| |
| |
|................................................|
问题是它们都可以同时滚动 如果已经开始在第二个对象中滚动,如何阻止滚动第一个UIScrollView对象?
答案 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
但有时它仍会滚动(也许它不会在实际设备上),所以我使用第二种方法来检查滚动何时结束。