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

[UITextField text]NSStringのローカル変数を宣言し、それに対して操作NSMutableStringを実行する必要がありますinsertString

それがあなたを助けることを願っています

于 2013-01-04T10:22:22.127 に答える
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 に答える
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 に答える
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 に答える