0

Textfield を特殊文字で検証しようとしましたが、

しかし、キーパッドから削除ボタンを押します。テキスト ファイルのデータが削除されません。

このコードを使用して Textfield を検証しました。

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
      NSCharacterSet * invalidNumberSet = [NSCharacterSet characterSetWithCharactersInString:@"_!@#$%^&*()[]{}'\"<>:;|\\/?+=~`"];

     if([[string stringByTrimmingCharactersInSet:invalidNumberSet]isEqualToString:@""])
     {
        return NO;
     }
     else
     {
        return YES;
     }
}

どうすればそれができるか教えてください。

4

2 に答える 2

2

このような共通関数を作成して機能を実装し、

-(BOOL)isNumeric:(NSString *)pTmpString
{
    BOOL isValid = YES;
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"_!@#$%^&*()[]{}'\"<>:;|\\/?+=~`"];
    for (int i = 0; i < [pTmpString length]; i++) 
    {
        unichar c = [pTmpString characterAtIndex:i];
        if ([myCharSet characterIsMember:c]) 
            isValid = NO;
    }
    return isValid;
}

そしてそれを次のように使用します

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
    BOOL isValid = [self isNumeric:string];    
    return isValid;
} 

これは、キーボードからその文字を押しても、キーボードからテキストフィールドへの特殊文字を受け入れません。

疑問がある場合は、教えてください..私がお手伝いします..

これがあなたに役立つことを願っています..

于 2012-08-01T11:48:33.630 に答える
0

これらの特別な単語を防ぐために、これが役立つ可能性があることをお勧めします.このタイプの文字列が一致するのを防ぐためのオプションはたくさんあります.

   if([string isEqualToString:@"_"] || [string isEqualToString:@"@"] || [string isEqualToString:@"#"] || [string isEqualToString:@"$"] || [string isEqualToString:@"%"] ||  [string isEqualToString:@"^"] ||  [string isEqualToString:@"&"] ||  [string isEqualToString:@"*"] ||  [string isEqualToString:@"("] ||  [string isEqualToString:@")"] ||  [string isEqualToString:@"["] ||  [string isEqualToString:@"]"] ||  [string isEqualToString:@"{"] || [string isEqualToString:@"'"] || [string isEqualToString:@"\""] || [string isEqualToString:@"\\"] || [string isEqualToString:@"<"] || [string isEqualToString:@">"]|| [string isEqualToString:@":"]|| [string isEqualToString:@";"]|| [string isEqualToString:@"|"]|| [string isEqualToString:@"/"]|| [string isEqualToString:@"?"]|| [string isEqualToString:@"+"] || [string isEqualToString:@"="]|| [string isEqualToString:@"~"]  ) {
        return NO;
    }else{
        return YES;
    }

もう 1 つのオプションは正規表現です。これがあなたに役立つことを願っています。

于 2012-08-01T11:48:06.740 に答える