2017-07-27 126 views
0

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

这种性质的处理状态后:

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

的问题是,isDragging状态保存很长一段时间,在这段时间UICollectingView显示我isDragging的真实状态(但没人与细胞相互作用)。我需要此属性来了解何时重新加载收集。状态仅在新拖动后刷新。

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

P.S.我正在使用没有任何自定义类和多线程的纯原生UICollectionView

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

回答

1

当滚动结束时,您不应该轮询isTrackingisDragging以了解它。使用代表方法scrollViewDidEndDragging(_:willDecelerate:)scrollViewDidEndDecelerating(_:)

+0

我正在使用这些方法,但在我的情况下,它不是一个解决方案,因为委托人在交互之后调用。应用程序从互联网上下载数据,我想尽快显示用户的新数据。如果用户停留在单元格上1分钟或更长时间,在此期间我正尝试重新加载collectionView,但isDragging键显示有人正在与单元格进行交互,然后重新加载CollectionView,我想确保它处于“安静状态”。 Ofc我可以添加我自己的bool变量到'scrollViewDidEndDragging','scrollViewWillBeginDragging'方法,但它不是我正在寻找的解决方案。 –

+0

“应用程序从互联网下载数据,我想尽快显示用户的新数据。”问题是,你在你的问题中没有提到这一点。基本上你问了一个错误的问题。尝试询问实际问题,而不是一些x-y问题。 – matt

+0

你的回答是针对真正的iOS SDK问题的解决方法。正如我上面提到的“我需要这个属性来理解何时重新加载收集”。有什么方法可以理解collecitonView在“安静”状态? –