0

我需要从指定 anNSString时删除一个字符NSRange。我有一个文本字段,我输入了一些带有数字格式的文本,我得到的值为$1,234,567.00.

现在我将光标放在数字 5 之后并想删除数字 5。在 Text 委托方法shouldChangeCharactersInRange中,我得到了(7,1)按退格键时的范围。我尝试了以下

modifiedFieldText = [modifiedFieldText stringByReplacingCharactersInRange:NSMakeRange(range.location - 1, range.length) withString:string];

但我无法删除正确的字符。对此的任何建议都会有很大帮助。请纠正我哪里出错了。

4

1 回答 1

2

modifiedFieldText我怀疑在到达这一行之前,您必须有一些正在修改的代码行。您应该确保将range应用到原始textField内容,通过直接stringByReplacingCharactersInRange使用来实现textfield,例如:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *modifiedFieldText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // now do whatever else you want
}

使用该代码,如果包含文本字段$1,234,567.00并且用户删除了5,则范围将是{7, 1},结果modifiedFieldText将是$1,234,67.00,您可能可以继续并重新格式化以调整您认为合适的标点符号。

如果您仍然遇到问题,请使用更完整的shouldChangeCharactersInRange.

于 2013-06-06T14:46:45.900 回答