2012-11-22 12 views
8

ho questa calcolatrice del mercato azionario che sto lavorando su e ho cercato la documentazione Apple, Internet, qui a StackOverflow, ma non era riuscito a trovare la risposta ..come inserire il simbolo di valuta mentre e dopo aver inserito UITextfield?

Ho un UITextfield in cui l'utente sarà inserire un valore di valuta. Quello che voglio implementare è quando l'utente sta scrivendo o almeno dopo aver digitato il valore, il campo di testo mostrerà anche il simbolo di valuta corrispondente al locale che è.

È come un segnaposto, ma non quello che abbiamo in xcode, perché xcode è lì prima che scriviamo e quello che voglio dovrebbe essere lì durante la digitazione e dopo di esso. Potrei usare un'immagine di sfondo con la valuta al suo interno, ma in quel caso non sarei in grado di localizzare l'app.

Quindi, se qualcuno potesse aiutare, apprezzerei.

Grazie in anticipo.

+0

Cosa intendi per "simbolo di valuta Xcode"? –

risposta

5

Il modo più semplice sarebbe quella di mettere un'etichetta con proprio testo allineato contro il vostro campo di testo, che avrebbe lasciato testo allineato.

Quando l'utente inizia a modificare il campo di testo, impostare il simbolo di valuta:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
     self.currencyLabel.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]; 
    } 

Se si desidera mantenere come parte del testo nel textField, diventa un po 'più complicato in quanto è necessario impedire loro di eliminare il simbolo, una volta messo lì:

// Set the currency symbol if the text field is blank when we start to edit. 
- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if (textField.text.length == 0) 
    { 
     textField.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]; 
    } 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    // Make sure that the currency symbol is always at the beginning of the string: 
    if (![newText hasPrefix:[[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]]) 
    { 
     return NO; 
    } 

    // Default: 
    return YES; 
} 

Come @Aadhira fa notare, si dovrebbe anche essere la formattazione della valuta utilizzando un numero formattatore dal momento che si sta visualizzando all'utente.

3

Per raggiungere questo obiettivo è necessario utilizzare NSNumberFormatter.

Provare il seguente codice e da questo, una volta inseriti i valori e al termine della modifica, i valori verranno formattati con la valuta corrente.

-(void)textFieldDidEndEditing:(UITextField *)textField { 

    NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [currencyFormatter setLocale:[NSLocale currentLocale]]; 
    [currencyFormatter setMaximumFractionDigits:2]; 
    [currencyFormatter setMinimumFractionDigits:2]; 
    [currencyFormatter setAlwaysShowsDecimalSeparator:YES]; 
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

    NSNumber *someAmount = [NSNumber numberWithDouble:[textField.text doubleValue]]; 
    NSString *string = [currencyFormatter stringFromNumber:someAmount]; 

    textField.text = string; 
} 
Problemi correlati