Como apagar parte de uma imagem à medida que o usuário toca nela

Meu objetivo geral é ter um campo cinza sobre uma imagem e, à medida que o usuário esfrega esse campo cinza, ela revela a imagem abaixo. Basicamente, como um cartão de raspadinha da loteria. Fiz várias pesquisas nos documentos e neste site, mas não consigo encontrar a solução.

A seguir, é apenas uma prova de conceito para testar "apagando" uma imagem com base em onde o usuário toca, mas ela não está funcionando. :(

Eu tenho um UIView que detecta toques e envia as cordas da movimentação para o UIViewController que corta a imagem em um UIImageView, fazendo o seguinte:

- (void) moveDetectedFrom:(CGPoint) from to:(CGPoint) to
{
    UIImage* image = bkgdImageView.image;
    CGSize s = image.size;
    UIGraphicsBeginImageContext(s);
    CGContextRef g = UIGraphicsGetCurrentContext();

    CGContextMoveToPoint(g, from.x, from.y);
    CGContextAddLineToPoint(g, to.x, to.y);
    CGContextClosePath(g);
    CGContextAddRect(g, CGRectMake(0, 0, s.width, s.height));
    CGContextEOClip(g);
    [image drawAtPoint:CGPointZero];
    bkgdImageView.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [bkgdImageView setNeedsDisplay];
}

O problema é que os toques são enviados para esse método muito bem, mas nada acontece no original.

Estou fazendo o caminho do clipe incorretamente? Ou?

Não tenho certeza ... então qualquer ajuda que você possa ter seria muito apreciada.

Agradecemos antecipadamente, Joel

questionAnswers(2)

yourAnswerToTheQuestion