Skip to content

Instantly share code, notes, and snippets.

@debugly
Last active February 1, 2016 08:43
Show Gist options
  • Save debugly/98f4ac67bddf1b036deb to your computer and use it in GitHub Desktop.
Save debugly/98f4ac67bddf1b036deb to your computer and use it in GitHub Desktop.
UIScroller 滑动时的状态转变

-1.用手拖动但是一直不离开scroller:

scrollViewWillBeginDragging:

停止拖动后:

scrollViewWillEndDragging:withVelocity:targetContentOffset:
scrollViewDidEndDragging:willDecelerate:

如果decelerate返回YES那么接着触发:

scrollViewWillBeginDecelerating
scrollViewDidEndDecelerating

如果在decelerate的时候按住scrollView,使其停止滑动,那么会触发:

scrollViewWillEndDragging:withVelocity:targetContentOffset:
scrollViewDidEndDragging:willDecelerate:

总结:

grag之后自然停止回调 scrollViewDidEndDecelerating; 如果grag之后,正在decelerating ,使用grag使其停止,那么回调 scrollViewDidEndDragging:willDecelerate:并且decelerate返回NO;

-2.相关属性

@property(nonatomic,readonly,getter=isTracking)     BOOL tracking;        // returns YES if user has touched. may not yet have started dragging
@property(nonatomic,readonly,getter=isDragging)     BOOL dragging;        // returns YES if user has started scrolling. this may require some time and or distance to move to initiate dragging
@property(nonatomic,readonly,getter=isDecelerating) BOOL decelerating;    // returns YES if user isn't dragging (touch up) but scroll view is still moving

开始grag之前,进入tracking 模式; dragging 意味着进入grag状态; decelerating 意味着进入惯性滑动模式;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment