A partir de k06a's answer, he refinado un poco por lo que funciona más como el UITableView paginado real. Las diferencias en el comportamiento son bastante notables con las filas de la tabla de pantalla completa. Incluso una mini-película en cualquier dirección debe desplazar la tabla a la siguiente página: Hago esto comprobando primero la velocidad.
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset
{
CGFloat rowHeight = tableView.rowHeight;
int verticalOffset = ((int)targetContentOffset->y % (int)rowHeight);
if (velocity.y < 0)
{
targetContentOffset->y -= verticalOffset;
}
else if (velocity.y > 0)
{
targetContentOffset->y += (rowHeight - verticalOffset);
}
// No velocity, snap to closest page
else
{
if (verticalOffset < rowHeight/2)
{
targetContentOffset->y -= verticalOffset;
}
else
{
targetContentOffset->y += (rowHeight - verticalOffset);
}
}
}
Tenga en cuenta que, además, el establecimiento de
self.tableView.decelerationRate = UIScrollViewDecelerationRateFast;
en viewDidLoad:
hace que sea más cercana a la realidad, pero no del todo.
He estado jugando con el establecimiento de velocidades de desaceleración aún más rápidas utilizando el code shown here pero no pude hacerlo bien.
no funciona muy bien para mí. Además, como está utilizando DidEndDecelerating, el código no se llama cuando no hay desaceleración (es decir: si la tabla no está "activada", sino que se libera suavemente) – pixelfreak
Debe agregar el mismo código a - (void) scrollViewDidEndDragging :(UIScrollView *) scrollView desacelerará: (BOOL) decelerate si se desacelerará: (BOOL) decelerate es falso – Julien
@Julien Sí, olvidé pegar el segundo método. ¡Nadie lo notó por más de un año! Thx – maxcanna