2013-07-24 2 views
0

Проблема в том, что на русской клавиатуре числовая панель имеет «,» вместо «.». и когда просмотр загружен, у меня есть «0.0» в текстовом поле, когда я думал, что пользователь сможет ввести только «.». Я использовал такой код, чтобы предотвратить ввод нескольких «.».ios ограничивают ввод нескольких «.» или «,» (если это русская локализация)

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

    NSArray *arrayOfString = [newString componentsSeparatedByString:@"."]; 

    if ([arrayOfString count] > 2) 
    { 
     return NO; 
    } 
} 

, но когда произошло, что в rus локализация появляется с «,» вместо «.». Я не могу узнать, как я могу предотвратить ввод «,», если есть «.». уже

и я заменяю введенные «,» на «.». поэтому я буду рад, если кто-то поможет ограничить ввод «,» если есть ». в текстовом поле уже

ответ

1

Вы можете использовать NSNumberFormatter, чтобы иметь локализованное число в вашем поле, когда оно отображается.

NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:kCFNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:1]; 
[formatter setLocale:[NSLocale currentLocale]]; 
NSString * myString = [formatter stringFromNumber:[NSNumber numberWithFloat:123.456]]; 

из https://stackoverflow.com/a/11504127/719866

Вы можете использовать форматировщик в чеке, чтобы увидеть, если значение, введенное пользователем, является действительным для этой локали с помощью метода -numberFromString:.