Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 验证带有特殊字符的文本字段时,键盘退格按钮不起作用_Iphone_Objective C_Cocoa Touch_Ios4 - Fatal编程技术网

Iphone 验证带有特殊字符的文本字段时,键盘退格按钮不起作用

Iphone 验证带有特殊字符的文本字段时,键盘退格按钮不起作用,iphone,objective-c,cocoa-touch,ios4,Iphone,Objective C,Cocoa Touch,Ios4,我尝试用特殊字符验证文本字段 但是,按键盘上的删除按钮。未删除文本字段数据 我用这段代码来验证Textfield - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet * invalidNumberSet = [NSCharacterSet charact

我尝试用特殊字符验证文本字段

但是,按键盘上的删除按钮。未删除文本字段数据

我用这段代码来验证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;
     }
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
NSCharacterSet*invalidNumberSet=[NSCharacterSet characterSetWithCharactersInString:@“\u!@$%^&*()[]{}\\”:;\ 124;\\/?+=``];
if([[string stringByTrimmingCharactersInSet:invalidNumberSet]IseQualString:@”“)
{
返回否;
}
其他的
{
返回YES;
}
}

请告诉我该怎么做?

为了防止这些特殊单词,我建议这可能会有所帮助,并且有很多选项可以防止这种类型的字符串匹配,我建议您使用下面的方法之一

   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;
    }
if([string IseQualtString:@“”]| |[string IseQualtString:@“@”]| |[string IseQualtString:@“#”]|[string IseQualtString:@“$”]|[string IseQualtString:@“%”]|[string IseQualtString:@“^”]|[string IseQualtString:@“&”]|[string IseQualtString:@]([124;][字符串IseQualtString:@“[”]| |[字符串IseQualtString:@”]|[字符串IseQualtString:@“{”]|[字符串IseQualtString:@”]|[字符串IseQualtString:@“\”]|[字符串IseQualtString:@“\ \ \ \”]|[字符串IseQualtString:@”]|[字符串IseQualtString:@]|[字符串IseQualtString:@]。][字符串IseQualtString:@“/”]| |[字符串IseQualtString:@”?“]| |[字符串IseQualtString:@“+”]| |[字符串IseQualtString:@”=“]| |[字符串IseQualtString:@”~“]{
返回否;
}否则{
返回YES;
}
另一个选择是正则表达式。
希望这对您有所帮助。

创建这样的通用函数来实现您的功能

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