0

NSStringan が指定されている場合、 anから文字を削除する必要がNSRangeあります。テキスト フィールドがあり、数値形式のテキストを入力すると、値が$1,234,567.00.

ここで、カーソルを数字の 5 の後に置き、数字の 5 を削除したいと思います。Text デリゲート メソッドでは、バックスペースを押したときshouldChangeCharactersInRangeのように範囲を取得します。(7,1)私は次のことを試しました

modifiedFieldText = [modifiedFieldText stringByReplacingCharactersInRange:NSMakeRange(range.location - 1, range.length) withString:string];

しかし、正しい文字を削除できません。これに関する提案は非常に役立ちます。私が間違っていたところを修正してください。

4

1 に答える 1

2

modifiedFieldTextこの行に到達する前に、変更中のコード行が必要であると思います。次のように、を直接使用することによって達成されるrange元のコンテンツに が適用されていることを確認する必要があります。textFieldstringByReplacingCharactersInRangetextfield

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *modifiedFieldText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // now do whatever else you want
}

そのコードでは、テキスト フィールドに含ま$1,234,567.00れていてユーザーが を削除した5場合、範囲は に{7, 1}なり、結果modifiedFieldTextは になります$1,234,67.00。これを続行して再フォーマットして、必要に応じて句読点を調整できます。

それでも問題が解決しない場合は、より完全な表現で質問を更新してくださいshouldChangeCharactersInRange

于 2013-06-06T14:46:45.900 に答える