我正在阅读Apple UIScrollView类参考文档中有关UIScrollView的以下内容:
因为滚动视图没有滚动 酒吧,它必须知道是否触摸 发出滚动意图的信号 意图跟踪中的子视图 内容。为了做出这个决定, 它暂时拦截了一次降落 通过启动计时器和之前的事件 计时器开火,看看是否 触摸手指使任何运动。如果 计时器没有重要的火灾 改变位置,滚动视图 将跟踪事件发送给被触摸的 内容视图的子视图。如果 然后用户将手指拖远 在计时器过去之前,足够了 滚动视图取消任何跟踪 子视图并执行滚动 本身。子类可以覆盖 touchesShouldBegin:withEvent:方法inContentView :, pagingEnabled,和 touchesShouldCancelInContentView: 方法(由 滚动视图)影响滚动方式 视图处理滚动手势。
我不理解以“如果用户在计时器过去之前将手指拖得足够远”开头的句子......我认为计时器已根据前一句话被解雇了。是在谈论这个中的另一个计时器吗?
答案 0 :(得分:2)
令人困惑。我相信有两种可能的行为取决于你的scrollView是否具有delaysContentTouches
属性集(和/或canCancelContentTouches
属性设置)
如果设置了delaysContentTouches
:
当用户点击滚动视图时,它通过启动计时器临时拦截触摸事件,并且在计时器触发之前,查看触摸手指是否进行任何移动。如果计时器在没有显着位置变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器过去之前将手指拖得足够远,则滚动视图开始滚动。
如果计时器已经开火:
如果设置了canCancelContentTouches
,则滚动视图会取消并触摸传递到其子视图并开始滚动。否则,不滚动。
如果在用户拖动他/她的手指之前计时器尚未到期,则会进行滚动。
我认为我做对了......(有人可能想要仔细检查)
HTH