ios - 有趣的重叠 UIScrollView 难题

标签 ios uiscrollview touch logic

假设您有两个 ScrollView ,一个垂直,一个水平,它们以“加号”模式相交。假设您在加号的中心有一个对象(例如 UIImageView)。如果您触摸对象并向上滚动,您希望对象在垂直 ScrollView 中向上滚动。但是,如果您触摸对象并横向滚动,您希望它在水平 ScrollView 内滚动。

问题:

  1. 对象最初位于哪个 ScrollView 中?或者两者都不存在?在检测到哪个 ScrollView 开始滚动之前,您不知道对象在哪个 ScrollView 中。

  2. 如果垂直 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/

相关文章:

ios - pushkit Voip通知可以用于其他目的吗

ios - 从 View Controller 中处理远程通知

ios - 如何在 UICollectionView 中启用滚动?

iphone - 在 iPhone 中以编程方式放大和缩小 : how can i set animation speed?

dart - 如何计算Flutter中的触摸坐标?

ios - UIButton 高亮区域延伸到按钮之外

iphone - Parsekit:如何匹配单个引号字符?

ios - 在 ios 中使用查询字符串创建 NSURLRequest

iphone - 将忽略 'drag' 并将其传递给 UIScrollView 的 UIButton

java - OnTouch MotionEvent Action 移动未触发