2012-08-01 95 views
0

验证文本字段我试着用特殊字符来验证文本字段,键盘退格键不工作时有特殊字符

但是,从键盘上按下删除按钮。文本提交的数据没有删除。

我用这个代码来验证文本字段,

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

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

请,建议我,我该怎么办呢?

+0

是要防止那些特殊字符或不 – 2012-08-01 11:39:56

回答

2

创建这样的通用功能,实现你的功能,

-(BOOL)isNumeric:(NSString *)pTmpString 
{ 
    BOOL isValid = YES; 
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"[email protected]#$%^&*()[]{}'\"<>:;|\\/?+=~`"]; 
    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; 
} 

这将不接受来自您的键盘特殊字符的文本框,虽然你按下那个字母从你的键盘。

如果你有那么任何疑问告诉me..I将帮助你..

希望这将帮助你..

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; 
    } 

而另一种选择是正则表达式。 希望这可以帮助你。