这是我的情况: 我有 2 个 UIScrollView 对象。它们都启用了水平滚动。它们的帧不重叠。两个对象都是同一 View 的 subview :
..................................................
| |
| UIView |
| |
| |
| ........................................ |
| | | |
| | UIScrollView 1 | |
| | | |
| |......................................| |
| |
| ........................................ |
| | | |
| | UIScrollView 2 | |
| | | |
| |......................................| |
| |
|................................................|
问题是它们都可以同时滚动。
如果已经开始在第二个对象中滚动,如何防止第一个 UIScrollView 对象滚动?
最佳答案
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
但有时它仍然会滚动(也许在实际设备上不会),所以我使用第二种方法来检查滚动何时结束。
关于ios - 如何防止同时滚动多个 UIScrollView 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389686/