2012-11-22 17 views
8

UITextfield'de yazarken ve sonra para birimi simgesi nasıl?

Bir UITextfield var .. ben üzerinde çalışıyorum bu borsa hesap var ve StackOverflow'daki burada Apple belgelerine, internet, arama yapmasına karşın, cevap bulmakta başarılı olamadı hangi kullanıcı olacak içinde bir para birimi değeri girin. Uygulamak istediğim, kullanıcı yazarken veya en azından bittikten sonra, metin alanının değeri, bulunduğu yere karşılık gelen para birimi simgesini de gösterir.

Bu bir yer tutucuya benziyor, ancak xcode'ta sahip olduğumuz gibi değil, biz yazmadan önce xcode'ların var olması ve yazarken ve sonrasında da orada olmasını istiyorum. İçinde para bulunan bir arka plan resmi kullanabilirdim, ancak uygulamayı yerelleştiremedim.

Eğer birisi yardım ederse, minnettar olurum.

Şimdiden teşekkürler.

+0

'Xcode'un para birimi simgesi' ile ne demek istiyorsunuz? –

cevap

5

kolay yolu hizalanmış metni sol olurdu metin alanına karşı metni hizalanmış sağ ile bir etiket koymak olacaktır.

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

TextField metnin bir parçası olarak tutmak istiyorsanız, bunu gerektiğinden biraz daha karmaşık hale gelir: kullanıcı textfield'ı düzenlemek başlar

, para birimi simgesini ayarlayın Eğer onu oraya bir kez sembolü silmesini saklayın: @Aadhira işaret

// 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; 
} 

olarak, aynı zamanda kullanıcıya gösterdiklerini beri bir sayı biçimlendirici kullanarak para birimi biçimlendirme olmalıdır.

3

Bunu başarmak için NSNumberFormatter kullanmanız gerekir.

Aşağıdaki kodu deneyin ve buna göre değerleri girdikten sonra ve düzenlemeyi bitirdiğinizde, değerler geçerli para birimiyle biçimlendirilecektir.

-(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; 
}