我正在尝试验证范围限制为5的文本字段,并且也不允许在起始字符上仅插入0值,并且我也想用特殊字符限制文本字段,以下是我的代码我的两个功能范围限制和起始值接受的字符0可以正常工作,但是特殊字符的限制无法正常工作,请问我是什么问题?
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
[self isNumeric:textField.text];
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if (range.location == 0 && [string isEqualToString:@"0"]) {
return NO;
}
return (newLength > 5) ? NO : YES;
}
-(BOOL)isNumeric:(NSString*)inputString{
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_NUMBERS] invertedSet];
NSString *filtered = [[inputString componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [inputString isEqualToString:filtered];
}
我认为您要限制5个数字字母,但0不能是第一个数字:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string{
NSString *resultStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
if([self isNumeric:resultStr]){
if(resultStr.length <= 5){
if(resultStr.length >= 1){
NSString *firstLetter = [resultStr substringWithRange:NSMakeRange(0, 1)];
if(![firstLetter isEqualToString:@"0"]){
return YES;
}
}
else{
return YES;
}
}
}
return NO;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句