Formatar um UITextField para moeda

Eu tenho um UITextField no meu aplicativo que recebe apenas entrada numérica do usuário. Esta entrada numérica representa a moeda e tem o valor padrão de 0,00.

Gostaria de criar algo como uma máscara para formatar o UITextField à medida que o usuário digita os números. Por exemplo:

9 se torna $ 0,09 99 se torna $ 0,99 999 se torna $ 999,99

O código abaixo funciona muito bem, mas como eu estou usando valores inteiros e flutuantes, o aplicativo acabará exibindo valores errados após um determinado ponto. Por exemplo:

999999999 torna-se 100000000

Isso acontece porque flot e número inteiro não são precisos o suficiente e o NSDEcimalNumber deve ser usado. O ponto é que não consigo descobrir como substituir meus números inteiros e valores flutuantes por NSDecimalNumber.

Alguém poderia me dar uma mão para resolver isso? Passo algum tempo pesquisando na Web por uma solução, mas não achei que atenda às minhas necessidades e muitas pessoas com o mesmo problema.

Aqui está o código:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag == 1){
    NSString *cleanCentString = [[textField.text componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
    NSInteger centValue= cleanCentString.integerValue;

    if (string.length > 0)
    {
        centValue = centValue * 10 + string.integerValue;
    }
    else
    {
        centValue = centValue / 10;
    }

    NSNumber *formatedValue;
    formatedValue = [[NSNumber alloc] initWithFloat:(float)centValue / 100.0f];
    NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init];
    [_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    textField.text = [_currencyFormatter stringFromNumber:formatedValue];
    return NO;
}

if (textField.tag == 2){
    // Nothing for now
}

return YES;
}

questionAnswers(2)

yourAnswerToTheQuestion