Je définis une nouvelle valeur à targetContentOffset
dans scrollViewWillEndDragging(_:withVelocity:targetContentOffset:)
pour créer une solution de pagination personnalisée dans un UITableView
. Cela fonctionne comme prévu lorsque vous définissez une coordonnée pour targetContentOffset
dans la même direction de défilement que la vitesse pointe. Cependant, lorsque vous enclenchez "vers l'arrière" dans la direction opposée de la vélocité, il se "repositionne" immédiatement sans animation. Cela a l'air assez mauvais. Toutes les pensées sur la façon de résoudre cela.La mise à jour de targetContentOffset dans scrollViewWillEndDragging vers une valeur dans la mauvaise direction n'anime pas
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
// a lot of caluculations to detemine where to "snap scroll" to
if shouldSnapScrollUpFromSpeed || shouldSnapScrollUpFromDistance {
targetContentOffset.pointee.y = -scrollView.frame.height
} else if shouldSnapScrollDownFromSpeed || shouldSnapScrollDownFromDistance {
targetContentOffset.pointee.y = -detailViewHeaderHeight
}
}
je pourrais potentionally calculer quand ce « bug » apparaît et peut-être utiliser une autre façon de « instantané de défilement ». Des suggestions sur la façon de le faire ou le résoudre en utilisant targetContentOffset.pointee.y
comme d'habitude?
Comment avez-vous détecté 'willSnapScrollBackWithoutAnimation'? –
willSnapBackWithoutAnimation est défini sur true lorsque le défilement est dans un intervalle pouvant être espacé (yOffset de défilement) et que la vélocité est inférieure à la valeur souhaitée (1.0) et que la vélocité n'est pas 0. – Sunkas