我在输入 textField 时设置电话号码格式,例如 (222) 233-3441。当用户持续输入超过 14 个字符(包括特殊字符)时,所有特殊字符将被删除,仅显示数字(即 222233344188)。并且当他们删除一些字符回到14个字符时,电话号码格式将再次设置。我达到了我想要的。但删除时遇到问题。
- 删除时 - 当字符数达到 10 时应用格式。因此 2222333441 变为 (222) 233-3441。
- 继续删除,因为格式被应用并且字符再次达到10,所以循环。
变得空白继续前进。请向我提出解决此问题的宝贵建议。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if(string.length!=0){ //detect backspace
if (textField.text.length == 0)
textField.text = [NSString stringWithFormat:@"(%@",textField.text];
if (textField.text.length == 4)
textField.text = [NSString stringWithFormat:@"%@) ",textField.text];
if (textField.text.length == 9)
textField.text = [NSString stringWithFormat:@"%@-",textField.text];
if (textField.text.length>13){
NSString *value=[NSString stringWithString:textField.text];
textField.text=[[value componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]componentsJoinedByString:@""];
}
}
else{
if(textField.text.length==11){
NSMutableString *text=[NSMutableString stringWithString:textField.text];
[text insertString:@"(" atIndex:0];
[text insertString:@") " atIndex:4];
[text insertString:@"-" atIndex:9];
textField.text=text;
}
}
return YES;
}
谢谢。