假设您有两个 ScrollView ,一个垂直,一个水平,它们以“加号”模式相交。假设您在加号的中心有一个对象(例如 UIImageView)。如果您触摸对象并向上滚动,您希望对象在垂直 ScrollView 中向上滚动。但是,如果您触摸对象并横向滚动,您希望它在水平 ScrollView 内滚动。
问题:
对象最初位于哪个 ScrollView 中?或者两者都不存在?在检测到哪个 ScrollView 开始滚动之前,您不知道对象在哪个 ScrollView 中。
如果垂直 ScrollView 在顶部,则水平 ScrollView 不会在 ScrollView 重叠的中心区域接收到触摸。
有人能想出解决这个问题的方法吗? (改设计不是办法)
另一种思考方式是:您有一个 100x100 的图 block 网格,但您一次只能在屏幕上看到一个 10x10 的网格。您希望能够横向滚动每一行,但您还希望能够垂直滚动每一列。显然,在每次新的触摸/滚动开始之前,滚动位置必须锁定到最接近的图 block 大小倍数。但这意味着在任何给定时间,任何图 block 都可以处于水平或垂直滚动 View 中。
最佳答案
为其物理使用(单个) ScrollView (directionLockEnabled = YES
),但实际上不要使其成为您的图 block 的父 View 。
有关此技术的更多信息,请参阅 WWDC2012 视频“使用 ScrollView 增强用户体验”。
关于ios - 有趣的重叠 UIScrollView 难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609584/