【问题标题】:UICollectionView: isDragging property isn't in correct stateUICollectionView:isDragging 属性未处于正确状态
【发布时间】:2017-07-27 16:23:53
【问题描述】:

我有全屏 UICollectionView 单元格(左前 -> 右后)。当我滚动到最后一个单元格时,我检查了 3 个属性:isTracking、isDragging 和 isDecelerating。 当我在最后一个单元格上时,向左拖动一点(查看前一个单元格的图片),然后(不抬起手指)向右拖动(锚定单元格)。结束触摸并检查属性。

此过程后的属性状态:

isTracking = NO; //false
isDragging = YES; //true
isDecelerating = NO; // false

问题是,isDragging 状态保存了很长时间,在此期间 UICollectingView 向我显示 isDragging 处于真实状态(但没有人与单元格交互)。我需要这个属性来了解何时重新加载集合。状态仅在新拖动后刷新。

那么,问题是,如何改进 UICollectionView 的代码和行为,以从 isDragging 属性中获取正确的值? 有什么方法可以理解处于“安静”状态的 collecitonView?

附:我正在使用清晰的原生 UICollectionView,没有任何自定义类和多线程

已编辑:添加问题“是否存在...“安静”状态?”

【问题讨论】:

    标签: ios objective-c uicollectionview


    【解决方案1】:

    您不应该轮询isTrackingisDragging 来了解滚动何时结束。使用委托方法scrollViewDidEndDragging(_:willDecelerate:)scrollViewDidEndDecelerating(_:)

    【讨论】:

    • 我正在使用这些方法,但在我的情况下这不是一个解决方案,因为代表在交互后调用。应用程序从互联网下载数据,我想尽快为用户显示新数据。如果用户在单元格上停留 1 分钟或更长时间怎么办,在此期间我试图重新加载 collectionView 但 isDragging 键向我显示有人与单元格交互,在重新加载 CollectionView 之前我想确保它处于“安静状态” ”。 Ofc 我可以将我自己的布尔变量添加到方法scrollViewDidEndDraggingscrollViewWillBeginDragging,但这不是我正在寻找的解决方案。
    • "应用程序从互联网下载数据,我想尽快为用户显示新数据。"问题是,你在你的问题中什么也没说。基本上你问错了问题。尝试询问实际问题,而不是 x-y 问题。
    • 您的回答是解决实际 iOS SDK 问题的一种解决方法。正如我上面提到的“我需要这个属性来了解何时重新加载集合”。有什么方法可以理解处于“安静”状态的 collecitonView?
    • 如果“安静”意味着“滚动已结束”,这根本不是一种解决方法——这就是你要做的。委托方法涵盖了了解滚动已结束的所有可能性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多