Каков наилучший способ проверки ввода валюты в UITextField? - PullRequest
17 голосов
/ 05 декабря 2008

Мое приложение позволяет пользователю вводить числовое значение (валюту) в элементе управления UITextField, но желаемая раскладка клавиатуры, к сожалению, не является одним из встроенных параметров, поэтому мне пришлось выбрать " «Числа и пунктуация» в Интерфейсном Разработчике. Вот соответствующее диалоговое окно в IB:

enter image description here

Поэтому, когда мое приложение запрашивает ввод у пользователя, оно отображает следующее:

enter image description here

Что отлично, но посмотрите на все дополнительные ключи, доступные пользователю! Можно легко ввести "12; 56!" в текстовом поле, и я предполагаю, что должен как-то это подтвердить.

Итак, мой вопрос: как мне проверить валютные значения, введенные в UITextField?

Ответы [ 13 ]

1 голос
/ 21 октября 2010

Вы также можете использовать решение Gamma-Point и оценить, является ли * aNumber значением Nil, если его значением является Nil, то это означает символ, который не был 0-9. или, введенный таким образом, вы можете проверять только числа, переменная будет равна нулю, если введен какой-либо символ без номера.

1 голос
/ 05 декабря 2008

Использование NSNumberFormatter - правильный ответ. Он будет обрабатывать проверку и преобразование строки в и из правильного типа объекта.

0 голосов
/ 05 сентября 2010

Использование shouldChangeCharactersInRange приводит в замешательство всплывающую клавиатуру, поскольку кнопка возврата не работает.

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

    -(BOOL) isPositiveNumber: (NSString *) numberString {

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

    NSNumber *aNumber  =  [numberFormatter numberFromString:numberString];
    [numberFormatter release];

    if ([aNumber floatValue] > 0) {
        NSLog( @"Found positive number %4.2f",[aNumber floatValue] );

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