好像在UIScrollViewDelegate函数里
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
有时,scrollView.dragging 即使在之后也是如此
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)willDecelerate
被称为。
这是预料之中的吗?
如果
willDecelerate
的
scrollViewDidEndDragging:willDecelerate:
是YES
,那么是的,这是预期的。当用户放开拖动时,您会得到 scrollViewDidEndDragging
,但是 dragging
在视觉滚动/减速完成之前不会改变。因此,当您放开阻力时,您可能会看到 scrollViewDidEndDragging
之后是一些 scrollViewDidScroll
(并且 dragging
仍然是 YES
)。
tracking
,一旦用户松开它就会变成 NO
(即使滚动视图可能仍在滚动)。
不幸的是,
UICollectionView.isDragging
甚至UICollectionView.isTracking
一点都不靠谱。您必须存储一个属性来跟踪拖动状态,如下所示:
class YourScrollView: UIScrollView {
var isDragging = false
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
isDragging = true
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
isDragging = false
}
}