2011-02-09 14 views
0

.の後ろに2桁のテキスト入力を有効にする必要があります。 例:2.333と入力すると、2.33だけを許可できる場合は許可されません。検証中に問題が発生するテキストフィールド

私は return !([sepStr length]=2)を使用している場合、それは文句を言わない次の値を入力することを可能にすることを正常に動作

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    NSArray *sep = [textField.text componentsSeparatedByString:@"."]; 
    if([sep count]==2) 
    { 
     NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]]; 
     return !([sepStr length]=2); 
    } 
} 

このコードを使用しているため

ただし、値を削除しても、テキストフィールドでは変更が許可されません。 つまり、ユーザーの操作はありません。 編集できません。誰でも助けてください。 これをどのように修正できますか? ありがとうございます。

答えて

2

Thomas Clayson氏のコードの問題は、ユーザーが "1234"と入力した後でもテキストフィールドを編集できなくなった後、 "。"を挿入することです。 1と2の間、またはテキストフィールドに数字をペーストした場合。

はここより良いソリューションです:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    NSArray *sep = [newString componentsSeparatedByString:@"."]; 
    if([sep count]>=2) 
    { 
     NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]]; 
     return !([sepStr length]>2); 
    } 
    return YES; 
} 
+0

もまだらに動作します。 :) –

0

返品を評価していない可能性があります。 1つの=があり、それは式を評価するのではなく値を設定しています。これは、関数が常にあなたのケースでfalseを返すようにします。ここで

はとにかく私の編集です:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    NSArray *sep = [textField.text componentsSeparatedByString:@"."]; 
    if([sep count]==2) 
    { 
     NSString *sepStr=[NSString stringWithFormat:@"%@%@",[sep objectAtIndex:1],replacementString]; 
     return !([sepStr length]>2); 
    } 
} 

私が変更したすべてのテキストフィールドの現在のテキスト値に(NSString *)stringを追加することでしたし、それが2つの文字よりよりだったかどうかを確認するためにテストしました。

+0

は、あなたは私の貴重な時間を節約し、トーマのclaysonありがとう、これがfine.Veryクイックレスポンスグレート – MaheshBabu

関連する問題