Формат Integer с двумя десятичными форматами в поле UIText - PullRequest
0 голосов
/ 25 августа 2011

Я предоставляю пользователю поле, в котором отображается цифровая клавиатура, и хочу, чтобы он мог вводить только цифры с десятичным числом, это должно быть только одно. После десятичного числа должно быть не менее 2 цифр. Перед десятичной дробью должна быть хотя бы одна цифра. Тогда ввод не может быть 0 или 0,00. Предположим, что если пользователь введет номер 123456, он будет принят, а затем 123.56 также принят, как я могу это сделать, пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 25 августа 2011

вы можете сделать регулярное выражение для этого требования, как: -

NSString *numberRegEx = @"[0-9]+[.]{0,1}+[0-9]{0,2}";
NSPredicate *numberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegEx];
//Valid email address
if ([numberTest evaluateWithObject:textField.text] == YES) 
{
NSLog(@"correct value");
}
else
{
NSLog(@"incorrect value");
}
1 голос
/ 25 августа 2011

Сначала добавьте цель для UIControlEventEditingChanged вашего текстового поля:

[textField addTarget:self action:@selector(onEdit:) forControlEvents:UIControlEventEditingChanged];

добавьте свойство BOOL в ваш класс:

@property(nonatomic, assign) BOOL formatting;

, затем создайте метод onEdit: следующим образом:

-(void)onEdit:(UITextField*)field {
//if you have more than one text field you can check for the one you need to format
if(!self.formatting) {
    NSString* formattedText = ...//get the formatted text according to your rules
    self.formatting = YES;//infinite loop prevention
    field.text = formattedText;  
    self.formatting = NO;
}

} 
0 голосов
/ 25 августа 2011

Вы можете навязать все свои условия методом -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string.Здесь textField.text будет самым последним текстом, введенным пользователем.Вы можете разобрать его и посмотреть, не выполняется ли какое-либо из ваших условий.В этом случае верните NO.

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
     if(allConditionsMet)
         return YES;

      return NO;
}

HTH,

Акшай

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