Проверка для чисел (0-9) в текстовом поле - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь проверить текстовое поле только для чисел.

Я использую следующий метод:

if(isnumber(noOfPassengers.text.intValue))
{
    NSLog(@"value entered correctly.");
    return ;
}
else
NSLog(@"Error: Only numerica values are accepted");

Функция isnumber () не работает должным образом. Я хотел бы проверить только для номеров. Застрял здесь. Любая другая встроенная функция для проверки чисел или даже символов?

Ответы [ 5 ]

4 голосов
/ 11 января 2012

Вы не опубликовали код для своей функции isnumber, поэтому диагностировать проблему там невозможно. Однако, написание функции с нуля, вот что я бы сделал:

-(BOOL)isNumeric:(NSString*)inputString{
    NSCharacterSet *alphaNumbersSet = [NSCharacterSet decimalDigitCharacterSet];
    NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:inputString];
    return [alphaNumbersSet isSupersetOfSet:stringSet];
}
3 голосов
/ 11 января 2012

Правильно, что нужно сделать здесь, это реализовать UITextFieldDelegate textField:shouldChangeCharactersInRange:replacementString: для приема только числовых символов.

В методе делегата вернуть YES и полосулюбые символы, которых нет в наборе десятичных символов .

1 голос
/ 11 января 2012

Использовать NSScanner:

int iValue;

if (noOfPassengers.text.length > 0 && [[NSScanner scannerWithString:noOfPassengers.text] scanInt:&iValue]) {
    //do smomething with iValue (int value from noOfPassengers.text)
    NSLog(@"value entered correctly.");
    return ;
}
else
    NSLog(@"Error: Only numerica values are accepted");
0 голосов
/ 11 января 2012

Простой ответ на ваш вопрос - просто показать цифровую клавиатуру и проверьте значение. Вам не нужно реализовывать предложенный UITextFieldDelegate @ Ben.s.

0 голосов
/ 11 января 2012

для iOS, вы должны разрешить отображение только цифровой клавиатуры. У пользователя не будет выбора вводить любое другое значение, кроме чисел.

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