iOS- 使用下面的代码,我可以自动添加连字符,但无法在文本字段中正确进行编辑:- 编辑就像单击以在填充的数字之间插入任何数字时,这将在数字末尾进行编辑并且进一步不正确删除该号码。任何人都可以帮我解决IOS 假设用户第一次输入 123-456-7890 这样的号码。之后他想用 7 更改数字 4,然后 7 数字没有插入正确的位置。并且将超过 10 位数字的限制。我想解决这个问题。给我编辑代码的解决方案。不要只擦掉代码中的空格,然后再给我看
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField == txtUserName)
{
if (range.location == 12)
{
return NO;
}
if (range.length == 0 && ![[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[string characterAtIndex:0]])
{
return NO;
}
if (range.length == 0 && (range.location == 3 || range.location == 7))
{
txtUserName.text = [NSString stringWithFormat:@"%@- %@",txtUserName.text,string];
return NO;
}
if (range.length == 1 &&(range.location==4 ||range.location ==7))
{
range.location--;
range.length = 2;
txtUserName.text = [txtUserName.text stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"Nisha..%@",txtUserName.text);
return NO;
}
}
return YES;
}
最佳答案
需要去掉
中的空格txtNumber.text = [NSString stringWithFormat:@"%@-%@",txtNumber.text,string];
因为空格也算一个字符。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField == txtNumber)
{
if (range.location == 12)
{
return NO;
}
if (range.length == 0 && ![[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[string characterAtIndex:0]])
{
return NO;
}
if (range.length == 0 && (range.location == 3 || range.location == 7))
{
txtNumber.text = [NSString stringWithFormat:@"%@-%@",txtNumber.text,string];
return NO;
}
if (range.length == 1 &&(range.location==4 ||range.location ==7))
{
range.location--;
range.length = 2;
txtNumber.text = [txtNumber.text stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"Nisha..%@",txtNumber.text);
return NO;
}
}
return YES;
}
关于ios - 输入电话号码后编辑无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019543/