UITextField Установка точности - PullRequest
0 голосов
/ 22 марта 2011

Эй, я использую UITextField для ввода значений с плавающей запятой.Я сталкиваюсь с трудностью, поскольку хочу во время выполнения ограничить точность значений, которые пользователь может вводить с точностью до 2 десятичных знаков.Например:

Допустимы такие значения, как 1.11,11.11, 111.11, 1111.11, а такие значения, как 1.123, 1.111, 1.1111, не являются

. Как можно добиться этого без написания слишком большого количества кода.Таким образом, в основном, когда точность десятичной точки достигает 2, пользователь не сможет увеличить его до 3. Поле ввода должно прекратить редактирование там.

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Используйте протокол UITextFieldDelegate и реализуйте textField:shouldChangeCharactersInRange:replacementString:

Всякий раз, когда вводится символ, этот метод вызывается, поэтому в этом методе проверьте, является ли введенный символ '.' затем разрешите вводить только две цифры после '.'

Из этого SO вопроса как проверить текстовое поле, которое допускает две цифры после

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    NSArray *sep = [newString componentsSeparatedByString:@"."];
    if([sep count]>=2)
    {
        NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
        return !([sepStr length]>2);
    }
    return YES;
}
0 голосов
/ 09 октября 2012

У вас может быть счетчик, который будет увеличиваться после.введено и счетчик больше 2 => номер возврата:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

if(string isEqualToString:@"." )
{
 counter++;
}
if(counter>2)
{
    return NO;
}
else
{
return YES;
}

}

сделать счетчик глобальной переменной.

0 голосов
/ 22 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...