在iOS中将文本插入字符串

时间:2013-01-04 10:14:12

标签: objective-c ios

我需要我的用户输入数字来输入他的电话号码。用户只能输入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 个答案:

答案 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调用中。