【发布时间】:2013-05-27 22:27:35
【问题描述】:
我问这个问题的一些背景:
我有一个 UIScrollView,我使用 UIBezierPaths 在其上直接绘制。当有许多/长路径并且用户开始滚动滚动视图时,将无法在 drawRect 中绘制所有路径。
所以我做了一个工作,当scrollViewWillBeginDragging: 触发时,我将所有路径绘制到 uiimageview(不使用视网膜且平坦度较低)上。我将此图像视图添加到我的滚动视图并暂时停止在 drawRect 中绘制路径。
然后,我从滚动视图中删除此图像视图,并在其中任何一个触发时将其设置为 nil:
scrollViewDidEndDragging:willDecelerate:(仅当 decelerate == NO 时)
scrollViewDidEndDecelerating:
这一切都很好。绘图很快,滚动也很快。
但有一个问题:
- 用户开始滚动并快速释放屏幕,因此滚动视图开始减速。
- 然后用户在滚动视图仍在减速时点击它,导致滚动视图立即停止。
此时没有调用scrollViewDidEnd: 函数。所以我的图像视图没有被删除并保留在内存中(更糟糕的是,非视网膜、低平坦度曲线仍然可见)。
我的问题:
我如何知道用户在 UIScrollView 减速时何时点击它?
【问题讨论】:
-
这总是发生,搜索几个小时无济于事。然后发布问题,3分钟后自己找到答案:-(void)scrollViewWillBeginDragging 在用户在减速时点击时再次调用
-
您应该将其发布为您问题的答案并标记它。将对有类似问题的其他人有所帮助,并为您提供更多获得代表的机会。
标签: objective-c uiscrollview uiimageview uibezierpath