programming objective learn framework development app iphone cocoa-touch iphone-sdk-3.0 uiscrollview

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:

  1. Asigna un delegado a tu objeto UIScrollView si aún no lo has hecho.
  2. 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.