UITextfield проверить, если это номер - PullRequest
1 голос
/ 01 апреля 2010

Как я могу проверить, вводит ли пользователь число в моем UITextField. В основном это отметка, которую я принимаю в диапазоне от 0 до 100, и она может быть десятичной. Я слышал, что могу попытаться преобразовать его в тип NSNumber и посмотреть, возвращает ли он значение null.

Я пробовал:

if(grade.text doubleValue] == 0){
   //Not a number
}

но тогда он все еще может принять "23f".

Ответы [ 2 ]

0 голосов
/ 18 мая 2012

Это похоже на хороший пример использования NSRegularExpression. Я думаю, что это будет работать:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9\.]{1,2}|100" 
                  options:NSRegularExpressionCaseInsensitive 
                    error:&error];
NSUInteger matches = [regex numberOfMatchesInString:myTextField.text 
                                            options:0  
                                              range:NSMakeRange(0, [myTextField.text length])]

Если совпадений равно 0 (совпадений не найдено), в поле не введено число. Это только у меня в голове - я еще не пробовал.

0 голосов
/ 01 апреля 2010

Используйте NSScanner, чтобы определить, есть ли в строке действительное целое число.

NSScanner * scanner = [NSScanner scannerWithString:myTextField.text];
NSInteger * integer;
if([scanner scanInteger:&integer]) {
  // valid number found
} else {
  // cry about it
}

Это можно улучшить, проверив текст в методе делегата UITextField textField:shouldChangeCharactersInRange:replacementString:, чтобы пользователь даже не мог ввести недопустимое значение.

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