Возможно, Вы могли присоединить UITextFieldDelegate
на управлении и иметь его реализация textField:shouldChangeCharactersInRange:replacementString:
Тот путь, если оно видит какие-либо символы, которые Вы не хотите в поле, оно может отклонить их.
В сочетании с textField:shouldChangeCharactersInRange:replacementString:
предложение, сделанное Marc, необходимо передать текст через NSNumberFormatter
использование NSNumberFormatterCurrencyStyle
. Это обработает причуды форматирования валюты и обработает локаль определенные опции.
существует раздел "Data Formatting Programming Guide for Cocoa" в документации iPhone при поиске его. К сожалению, большей частью информации о UI здесь является конкретный Mac OS X (не работает над iPhone), но это покажет Вам, как использовать классы средства форматирования.
Используя NSNumberFormatter корректный ответ. Это обработает проверку и преобразование строки к и от типа правильного объекта.
В то время как вы можете возиться с NSNumberFormatter, я обнаружил, что проще просто отсеивать все, кроме 0–9 и.
У меня это хорошо работает:
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
}
Если вы хотите, чтобы они могли вводить только цифры, вы можете также рассмотреть цифровую клавиатуру