我试图找到一种方法来强迫' UITextField
遵循set方法。例如:
我已成功将其限制为仅接受4个字符作为最大值,但我需要将4个字符限制设置为第一个字符"数字"第二个字符" AlphaNumeric"第三/第四是"数字"例如:1Z11
我也无法弄清楚你是否可以通过ASCII或VBA强制大写字母或不能。
任何帮助都是完美的,我环顾四周,但我只能找到的是如何强迫一个或另一个(所有数字或所有字母数字)。
最基本的问候 杰米
-Edit one -
我没有限制字符的代码,如上所述,我只能找到限制其中一种的方法,所以我还没有输入代码(如果你想要,可以链接到堆栈帖子吗?)。
答案 0 :(得分:1)
尝试为委托方法实现类似的功能:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location != 1) {
NSScanner *scanner = [NSScanner scannerWithString:string];
BOOL isNumeric = [scanner scanInteger:NULL] && [scanner isAtEnd];
return isNumeric;
}else if (range.location<4){
return YES;
}
return NO;
}
答案 1 :(得分:0)
请尝试以下
NSCharacterSet *numeric = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSCharacterSet *alphaNumberSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
//allow backspace
if ([characters isEqualToString:@""])
{
return YES;
}
switch (field.text.length) {
case 0:
case 2:
case 3:
{
BOOL retVal = ([characters rangeOfCharacterFromSet:numeric].location == NSNotFound);
return retVal;
}
break;
case 1:
{
BOOL retVal = ([characters rangeOfCharacterFromSet:alphaNumberSet].location == NSNotFound);
return retVal;
}
default:
return NO;
break;
}
}