2012-11-22 43 views
8

Tôi có điều này máy tính thị trường chứng khoán mà tôi đang làm việc trên và tôi đã tìm kiếm tài liệu của Apple, internet, ở đây tại Stackoverflow, nhưng đã không thành công trong việc tìm kiếm câu trả lời ..cách đặt ký hiệu tiền tệ trong khi và sau khi nhập vào UITextfield?

Tôi có một UITextfield trong đó người dùng sẽ nhập một giá trị tiền tệ. Những gì tôi muốn thực hiện là khi người dùng đang gõ hoặc ít nhất là sau khi anh ta kết thúc nhập giá trị, trường văn bản cũng sẽ hiển thị ký hiệu tiền tệ tương ứng với ngôn ngữ anh ta đang dùng.

Giống như trình giữ chỗ, nhưng không phải là trình giữ chỗ trong xcode, nguyên nhân của xcode là có trước khi chúng tôi nhập và thứ tôi muốn ở đó khi nhập và sau đó. Tôi có thể sử dụng hình nền với tiền tệ trong đó, nhưng sau đó tôi sẽ không thể bản địa hóa ứng dụng.

Vì vậy, nếu có ai có thể trợ giúp, tôi sẽ đánh giá cao.

Xin cảm ơn trước.

+0

Bạn có ý nghĩa gì với 'Ký hiệu tiền tệ của Xcode'? –

Trả lời

5

Cách dễ nhất là đặt nhãn có văn bản căn phải vào trường văn bản của bạn, văn bản có văn bản căn trái.

Khi người dùng bắt đầu để chỉnh sửa các textfield, thiết lập các biểu tượng tiền tệ:

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

Nếu bạn muốn giữ nó như một phần của văn bản trong TextField, nó trở thành một chút phức tạp hơn khi bạn cần giữ cho chúng khỏi xóa các biểu tượng khi bạn đặt nó ở đó:

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

Như @Aadhira chỉ ra, bạn cũng nên định dạng tiền tệ bằng cách sử dụng một định dạng số kể từ khi bạn đang hiển thị nó cho người dùng.

3

Bạn phải sử dụng NSNumberFormatter để đạt được điều này.

Hãy thử mã sau và bằng cách này, khi bạn đã nhập giá trị và khi bạn kết thúc chỉnh sửa, các giá trị sẽ được định dạng bằng đơn vị tiền tệ hiện tại.

-(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; 
} 
Các vấn đề liên quan