UIScrollView - (bounces = NO) parece anular (pagingEnabled = YES)

Eu tenho um UIScrollView com paginação nele (então o modelo típico com um UIPageControl e arrastando / arrastando para a esquerda e direita entre as páginas), e eu tenho que funcionar bem. O estranho é que quando eu queria me livrar de saltar (de modo que você não pode ver preto por trás da interface do usuário nos lados esquerdo e direito), de repente paginação não funciona mais.

Em outras palavras, quando:

scrollView.pagingEnabled = YES;
scrollView.bounces = YES;

Tudo funciona bem, exceto que não gosto do salto na página (0) e na página (tamanho-1). Mas quando eu faço isso:

scrollView.pagingEnabled = YES;
scrollView.bounces = NO;

Ele pára de se encaixar em cada página, tratando todas as páginas juntas como uma página longa. Assim, parece que, por alguma razão, a paginação é dependente de pular, o que é bom, desde que eu possa de alguma forma parar o pulo. Então, há outra maneira de se livrar disso? Ou há algo que estou fazendo errado?

EDITAR:A solução:

@interface PagingScrollView : UIScrollView
@end

@implementation PagingScrollView

- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        self.pagingEnabled = YES;
        self.bounces = YES;
    }
    return self;
}

- (void)setContentOffset:(CGPoint)offset
{
    CGRect frame = [self frame];
    CGSize contentSize = [self contentSize];
    CGPoint contentOffset = [self contentOffset];

    // Clamp the offset.
    if (offset.x <= 0)
        offset.x = 0;
    else if (offset.x > contentSize.width - frame.size.width)
        offset.x = contentSize.width - frame.size.width;

    if (offset.y <= 0)
        offset.y = 0;
    else if (offset.y > contentSize.height - frame.size.height)
        offset.y = contentSize.height - frame.size.height;

    // Update only if necessary 
    if (offset.x != contentOffset.x || offset.y != contentOffset.y)
    {
        [super setContentOffset:offset];
    }
}

@end

questionAnswers(1)

yourAnswerToTheQuestion