我需要在指定NSString
时删除NSRange
中的字符。我有一个文本字段,我输入一些带有数字格式的文本,我得到的值为$1,234,567.00
。
现在我将光标放在数字5之后,并想要删除数字5.在文本委托方法shouldChangeCharactersInRange
中,当我按退格键时,我将范围设为(7,1)
。我尝试了以下
modifiedFieldText = [modifiedFieldText stringByReplacingCharactersInRange:NSMakeRange(range.location - 1, range.length) withString:string];
但我无法删除正确的字符。对此提出任何建议都会有很大帮助。请纠正我错误的地方。
答案 0 :(得分: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}},您可以根据需要继续进行重新格式化以调整标点符号。
如果您仍然遇到问题,请使用$1,234,67.00
更完整的版本更新您的问题。