UIScrollView触摸处理

时间:2011-05-11 21:18:18

标签: iphone objective-c uiscrollview

我正在阅读Apple UIScrollView类参考文档中有关UIScrollView的以下内容:

  

因为滚动视图没有滚动   酒吧,它必须知道是否触摸   发出滚动意图的信号   意图跟踪中的子视图   内容。为了做出这个决定,   它暂时拦截了一次降落   通过启动计时器和之前的事件   计时器开火,看看是否   触摸手指使任何运动。如果   计时器没有重要的火灾   改变位置,滚动视图   将跟踪事件发送给被触摸的   内容视图的子视图。如果   然后用户将手指拖远   在计时器过去之前,足够了   滚动视图取消任何跟踪   子视图并执行滚动   本身。子类可以覆盖   touchesShouldBegin:withEvent:方法inContentView :,   pagingEnabled,和   touchesShouldCancelInContentView:   方法(由   滚动视图)影响滚动方式   视图处理滚动手势。

我不理解以“如果用户在计时器过去之前将手指拖得足够远”开头的句子......我认为计时器已根据前一句话被解雇了。是在谈论这个中的另一个计时器吗?

1 个答案:

答案 0 :(得分:2)

令人困惑。我相信有两种可能的行为取决于你的scrollView是否具有delaysContentTouches属性集(和/或canCancelContentTouches属性设置)

如果设置了delaysContentTouches

当用户点击滚动视图时,它通过启动计时器临时拦截触摸事件,并且在计时器触发之前,查看触摸手指是否进行任何移动。如果计时器在没有显着位置变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器过去之前将手指拖得足够远,则滚动视图开始滚动。

如果计时器已经开火:

如果设置了canCancelContentTouches,则滚动视图会取消并触摸传递到其子视图并开始滚动。否则,不滚动。

如果在用户拖动他/她的手指之前计时器尚未到期,则会进行滚动。

我认为我做对了......(有人可能想要仔细检查)

HTH