Iphone 验证带有特殊字符的文本字段时,键盘退格按钮不起作用
我尝试用特殊字符验证文本字段 但是,按键盘上的删除按钮。未删除文本字段数据 我用这段代码来验证TextfieldIphone 验证带有特殊字符的文本字段时,键盘退格按钮不起作用,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
- (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;
}