为什么我问这个的一些背景:
我有一个 UIScrollView,我直接使用 UIBezierPaths 在其上绘制。当有许多/长路径并且用户开始滚动滚动视图时,将无法在 drawRect 中绘制所有路径。
所以我做了一个工作,我在开火时将所有路径绘制到 uiimageview 上(不使用视网膜且平坦度较低)scrollViewWillBeginDragging:
。我将此图像视图添加到我的滚动视图并暂时停止在 drawRect 中绘制路径。
然后我从滚动视图中删除这个图像视图,并在其中任何一个触发时将其设置为 nil:(
scrollViewDidEndDragging:willDecelerate:
仅当decelerate == NO
)
scrollViewDidEndDecelerating:
这一切都很好。绘图很快,滚动也很快。
但是在以下情况下会出现一个问题:
- 用户开始滚动并快速释放屏幕,因此滚动视图开始减速。
- 然后用户在滚动视图仍在减速时点击它,导致滚动视图立即停止。
此时两个scrollViewDidEnd:
函数都没有被调用。所以我的图像视图没有被删除并保留在内存中(更糟糕的是,非视网膜、低平坦度曲线仍然可见)。
我的问题:
我如何知道用户在减速时点击 UIScrollView 的时间?