我需要我的用户输入数字来输入他的电话号码。用户只能输入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:'
需要一些指导。对不起,如果这是一个愚蠢的问题。
答案 0 :(得分: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];
答案 1 :(得分:4)
[UITextField text]
为NSString
,您需要声明NSMutableString
的局部变量并对其执行insertString
次操作
希望它可以帮到你
答案 2 :(得分:1)
实施<UITextFieldDelegate>
然后执行:
-(void)textFieldDidChange:(UITextField*)textField
{
if( textField.text.length == 2 || textField.text.length == 5 ){
textField.text = [textField.text stringByAppendingString:@"-"];
}
}
答案 3 :(得分: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调用中。