iphone - objective - Desactivar desaceleración de UIScrollView
swift ios documentation (5)
¿Hay alguna manera de desactivar la desaceleración de UIScrollView?
Quiero permitir que el usuario recorra el lienzo, pero no quiero que el lienzo continúe desplazándose después de que el usuario levantó el dedo.
Para iOS 5.0 o posterior, hay un método mejor que llamar a setContentOffset:animated:
Implementar el método de delegado scrollViewWillEndDragging:withVelocity:targetContentOffset:
en su archivo .m
:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
*targetContentOffset = scrollView.contentOffset;
}
Asignar el desplazamiento actual a targetContentOffset
detiene el UIScrollView
de desplazamiento automático.
Se usa debajo del código para desacelerar el desplazamiento en CollectionView
en Swift 4:
self.collectionView.decelerationRate = .leastNormalMagnitude
Simplemente configure la propiedad decelerationRate en 0
Deshabilitará la propiedad de desplazamiento automático. Pero tenga en cuenta que la interacción del usuario se volverá mala si el contenido de scrollview es grande.
Usted puede simplemente subir la tasa de desaceleración muy alta. Con una tasa infinita, se detendría inmediatamente. Intente establecer la velocidad a estas constantes:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
y
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Si todavía no es lo suficientemente rápido para ti, UIScrollViewDecelerationRateFast simplemente se escribe como float, por lo que puedes multiplicarlo por un factor de 10 para acelerarlo aún más.
Esto se puede hacer utilizando el método de delegado UIScrollView
scrollViewWillBeginDecelerating
para establecer automáticamente el desplazamiento de contenido a la posición de pantalla actual.
Para implementar:
- Asigna un delegado a tu objeto
UIScrollView
si aún no lo has hecho. En el archivo de implementación
.m
su delegado, agregue las siguientes líneas de código:-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ [scrollView setContentOffset:scrollView.contentOffset animated:YES]; }
Voila! No más de desplazamiento automático.