2011-01-12 5 views
2

私はアプリケーションに4つのテキストフィールドを持っています。許可するテキストフィールドを検証する方法。テキストフィールドで1回のみ

私はテキストフィールドとして私のテキストフィールドを検証するには

- (IBAction) textfield:(id)sender { 

    if ([textfield.text length] > 0) { 
     if ([textfield.text length] > 10){   
      textfield.text = [textfield.text substringWithRange:NSMakeRange(0, 10)]; 
    } 
     else { 
      //retrieve last character input from texfield   
      int I01 = [homevalue.text length]; 
      int Char01 = [homevalue.text characterAtIndex:I01-1]; 
      //check and accept input if last character is a number from 0 to 9 
      if ((Char01 < 46) || (Char01 > 57) || (Char01 == 47)) { 

       if (I01 == 1) { 
        textfield.text = nil; 
       } 
       else { 

        textfield.text = [homevalue.text substringWithRange:NSMakeRange(0, I01-1)]; 
       } 
      } 

     } 
    } 

} 

を休閑として0,1,...9.が、そのために私はコードを書くことは、正常に動作できるように、今私は.は、テキストフィールドに1回だけ可能にすることを確認する必要があります。

例:123.45

私のコードによると、私は再び.配置する場合、それが許可されています。 例:123.45.678

しかし、一度許可しないでください。そのテキストフィールドは許可されません。私はこれを行ってはどうすればよい

はいずれもplsは私を助けることができます。

ありがとうございます。

+0

マヘシュは質問をより明確にすることができますか。あなたの要件は何かを伝えるのは難しいです。 – Robin

答えて

4

"23.67"

NSString *decimalRegex = @"[0-9]+([.]([0-9]+)?)?"; // @"[0-9]+[.][0-9]+"; 
NSPredicate *decimalTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", decimalRegex]; 
BOOL isValidDecimal = [decimalTest evaluateWithObject:[textField text]]; 
のような数字で始まる文章は、この述語を試してみてくださいだけでなく、あなたがこの方法textfield.text上

- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet options:(NSStringCompareOptions)mask range:(NSRange)aRange

を使用することができます

"。"を許可する場合は、次の正規表現を使用して「0.95" のような拳の場所で、

NSString *decimalRegex = @"[0-9]*([.]([0-9]+)?)?"; //@"[0-9]*[.][0-9]+"; 

あなたのコードは

- (IBAction)textfield:(id)sender { 

    int textLength = [[textfield text] length]; 

    if (textLength > 0) { 

     NSString *decimalRegex = @"[0-9]+([.]([0-9]+)?)?"; //@"[0-9]+[.][0-9]+"; 
     NSPredicate *decimalTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", decimalRegex]; 
     BOOL isValidDecimal = [decimalTest evaluateWithObject:[textField text]]; 

     if (!isValidDecimal) { 

      NSString *text = [[textField text] substringToIndex:textLength - 1]; 
      [textfield setText:text] 
     } 
    } 
} 

が、私はこれが動作する必要がありますね、次のようになります!試してみる!

+0

私はこれを置くことができます – MaheshBabu

+0

これを* textfield:(id)sender *メソッドに配置してください。私は私の答えを編集しました。それを試してください。 – EmptyStack

+0

NSrangeExceptionが発生する – MaheshBabu

0

そのNSStringのが唯一の