Получение исключения IndexOutofBoundsException при реализации метода делегата mustChangeCharactersInRange в iOSIOS

Программируем под IOS
Ответить
Anonymous
 Получение исключения IndexOutofBoundsException при реализации метода делегата mustChangeCharactersInRange в iOS

Сообщение Anonymous »

В моем приложении есть UITextField, который я хочу использовать как калькулятор. Мне нужно, чтобы значение по умолчанию было 0,00, и когда пользователь вводит цифры, числа перемещаются справа налево, заменяя нули в 0,00 по одной цифре за раз, и приложение должно быть достаточно умным, чтобы добавлять запятые (,) после каждых трех цифр. Для этого я реализую метод делегата:

Код: Выделить всё

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {}
следующим образом:

Код: Выделить всё

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

if([[string stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]]
isEqualToString:@""])
return YES;

NSString *previousValue = [[[textField.text stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] stringByReplacingOccurrencesOfString:@"." withString:@""] stringByReplacingOccurrencesOfString:@"," withString:@""];
string = [string stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
NSString *modifiedValue = [NSString stringWithFormat:@"%@%@",previousValue,string];
modifiedValue = [NSString stringWithFormat:@"%@.%@",[modifiedValue substringToIndex:modifiedValue.length-2],[modifiedValue substringFromIndex:modifiedValue.length-2]];//this is the line that is causing the error

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];

textField.text = modifiedValue;
return NO;

}
Однако я получаю следующую ошибку:

Код: Выделить всё

'NSRangeException', reason: '*** -[__NSCFString substringToIndex:]: Range or index out of bounds'
Эта ошибка возникла в тот момент, когда я пытался ввести число в текстовое поле. Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/152 ... -shouldcha
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»