1

我需要我的用户输入数字来输入他的电话号码。用户只能输入 8 个数字(例如 XXXXXXXX)。我需要将电话号码更改为 XX-XX-XXXX 格式。

这是我尝试过的:

[tfDID.text insertString:@"-" atIndex:2];
[tfDID.text insertString:@"-" atIndex:5];

但它返回给我一个错误说:

No Visible @interface for 'NSString' declares the selector 'insertString:atIndex:'

在这方面需要一些指导。对不起,如果这是一个愚蠢的问题。

4

4 回答 4

4

No Visible @interface for 'NSString' declares the selector 'insertString:atIndex:'

当你试图改变文本框的值时,它会返回你 NSString。

NSString 对象不能被变异,所以将它转换成一个可变字符串然后对其进行操作。

制作你的字符串NSMutableString

作为,

NSMutableString *tfDIDString=[NSMutableString stringWithString:tfDID.text];
[tfDIDString insertString:@"-" atIndex:2];
[tfDIDString insertString:@"-" atIndex:5];
于 2013-01-04T10:18:42.970 回答
4

[UITextField text]就是NSString,你需要声明局部变量 ofNSMutableString并对其进行insertString操作

希望对你有帮助

于 2013-01-04T10:22:22.127 回答
1

实施<UITextFieldDelegate>然后执行:

-(void)textFieldDidChange:(UITextField*)textField
{
    if( textField.text.length == 2 || textField.text.length == 5 ){
        textField.text = [textField.text stringByAppendingString:@"-"];
    }
}
于 2013-01-04T10:24:52.413 回答
1

完全同意建议将其设为可变字符串的答案。只是扮演魔鬼倡导者,你可以这样做:

NSString *partOne = [NSString stringWithRange:NSMakeRange(0,2)];
NSString *partTwo = [NSString stringWithRange:NSMakeRange(2,2)];
NSString *partThree = [NSString stringWithRange:NSMakeRange(4,4)];

NSString *formattedNumber = [NSString stringWithFormat:@"%@-%@-%@",partOne,partTwo,partThree];

我已经把它写出来了,但是如果你不介意嵌套和牺牲一点可读性,你可以将部分的字符串声明压缩到 stringWithFormat 调用中。

于 2013-01-04T10:25:40.147 回答