2011-05-11 97 views
0

我从苹果的UIScrollView类参考文档阅读的UIScrollView如下:的UIScrollView触摸操作

由于滚动视图没有滚动条 ,它必须知道触摸 信号是否打算向与滚动 意图跟踪 内容中的子视图。为了做出这个决定, 它通过启动一个定时器临时截获一个触发事件,并且在定时器触发之前,看看触摸手指是否有任何移动。如果 计时器触发而位置不变,则滚动视图 将跟踪事件发送到内容视图的触摸的子视图 。如果 用户在计时器过去之前将其手指拉得足够远,则 滚动视图会取消子视图中的任何跟踪并执行滚动 本身。子类可以覆盖 touchesShouldBegin:withEvent:方法inContentView :, pagingEnabled,和 touchesShouldCancelInContentView: 方法(其由 滚动视图调用)来影响滚动 视图如何处理滚动手势。

我不明白以“如果用户在计时器过去之前足够拖动他们的手指......”我认为计时器已经根据前面的句子开火了的句子。这是在谈论另一个计时器吗?

回答

2

这很混乱。我相信有这取决于你的滚动视图是否有delaysContentTouches属性集(和或canCancelContentTouches属性被设置)

如果delaysContentTouches设置2种可能的行为:

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

如果定时器触发:

如果canCancelContentTouches设置滚动视图取消并触及传递给它的子视图,并开始滚动。否则,不滚动。

如果在用户拖动他/她的手指之前计时器尚未过期,就会发生滚动。

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

HTH