Arrastando um UIView dentro do UIScrollView

Eu estou tentando resolver um problema básico com arrastar e soltar no iPhone. Aqui está minha configuração:

Eu tenho um UIScrollView que tem uma grande subvisualização de conteúdo (eu sou capaz de rolar e zoom)A subvisão de conteúdo possui vários blocos pequenos como subvisualizações que devem ser arrastados dentro dela.

Minha subclasse UIScrollView possui este método:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *tile = [contentView pointInsideTiles:[self convertPoint:point toView:contentView] withEvent:event];
    if (tile) {
        return tile;
    } else {
        return [super hitTest:point withEvent:event];
    }
}

A subvisualização de conteúdo tem este método:

- (UIView *)pointInsideTiles:(CGPoint)point withEvent:(UIEvent *)event {
    for (TileView *tile in tiles) {
        if ([tile pointInside:[self convertPoint:point toView:tile] withEvent:event])
            return tile;
    }

    return nil;
}

E a visualização de blocos possui este método:

- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch *touch = [touches anyObject];   
    CGPoint location = [touch locationInView:self.superview];

    self.center = location;
}

Isso funciona, mas não está totalmente correto: a peça às vezes "cai" durante o processo de arrastar. Mais precisamente, ele para de receber toques Movido: invocações e a exibição de rolagem começa a ser rolada. Percebi que isso depende da velocidade de arrasto: quanto mais rápido eu arrasto, mais rápido o bloco "cai".

Alguma idéia de como manter o azulejo colado ao dedo arrastando?

questionAnswers(4)

yourAnswerToTheQuestion