【问题标题】:UIScrollView catching user tap during decelerationUIScrollView 在减速期间捕捉用户点击
【发布时间】:2013-05-27 22:27:35
【问题描述】:

我问这个问题的一些背景:

我有一个 UIScrollView,我使用 UIBezierPaths 在其上直接绘制。当有许多/长路径并且用户开始滚动滚动视图时,将无法在 drawRect 中绘制所有路径。

所以我做了一个工作,当scrollViewWillBeginDragging: 触发时,我将所有路径绘制到 uiimageview(不使用视网膜且平坦度较低)上。我将此图像视图添加到我的滚动视图并暂时停止在 drawRect 中绘制路径。

然后,我从滚动视图中删除此图像视图,并在其中任何一个触发时将其设置为 nil: scrollViewDidEndDragging:willDecelerate:(仅当 decelerate == NO 时) scrollViewDidEndDecelerating:

这一切都很好。绘图很快,滚动也很快。

但有一个问题:

  1. 用户开始滚动并快速释放屏幕,因此滚动视图开始减速。
  2. 然后用户在滚动视图仍在减速时点击它,导致滚动视图立即停止。

此时没有调用scrollViewDidEnd: 函数。所以我的图像视图没有被删除并保留在内存中(更糟糕的是,非视网膜、低平坦度曲线仍然可见)。

我的问题:

我如何知道用户在 UIScrollView 减速时何时点击它?

【问题讨论】:

  • 这总是发生,搜索几个小时无济于事。然后发布问题,3分钟后自己找到答案:-(void)scrollViewWillBeginDragging 在用户在减速时点击时再次调用
  • 您应该将其发布为您问题的答案并标记它。将对有类似问题的其他人有所帮助,并为您提供更多获得代表的机会。

标签: objective-c uiscrollview uiimageview uibezierpath


【解决方案1】:

我自己找到了答案: -(void)scrollViewWillBeginDragging 在减速过程中用户点击滚动视图时再次调用

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多