Ios 强制UITextField的第一个字符为数字,第二个字符为字母数字
我正试图找到一种方法来“强制”UITextField遵循set方法。例如: 我已经成功地将其限制为最多只能接受4个字符,但我需要它将4个字符的限制设置为第一个字符“数字”第二个字符“字母数字”第三/第四个字符为“数字”,例如:1Z11 我也不知道你是否可以强制使用大写字母,或者不像通过ASCII或VBA那样 任何帮助都是完美的,我已经环顾了四周,但我只能找到如何强制一个或另一个(全数字或全字母数字) 亲切的问候 杰米 -编辑一个-Ios 强制UITextField的第一个字符为数字,第二个字符为字母数字,ios,objective-c,Ios,Objective C,我正试图找到一种方法来“强制”UITextField遵循set方法。例如: 我已经成功地将其限制为最多只能接受4个字符,但我需要它将4个字符的限制设置为第一个字符“数字”第二个字符“字母数字”第三/第四个字符为“数字”,例如:1Z11 我也不知道你是否可以强制使用大写字母,或者不像通过ASCII或VBA那样 任何帮助都是完美的,我已经环顾了四周,但我只能找到如何强制一个或另一个(全数字或全字母数字) 亲切的问候 杰米 -编辑一个- 我没有限制字符的代码,如上所述,我只能找到限制其中一个字符的方法
我没有限制字符的代码,如上所述,我只能找到限制其中一个字符的方法,因此我还没有输入代码(如果需要,可以链接到堆栈帖子?。尝试为委托方法实现类似的功能:
- (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;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
如果(range.location!=1){
NSScanner*scanner=[NSScanner scannerWithString:string];
BOOL isNumeric=[scanner scanniger:NULL]&&[scanner isattend];
返回是数字;
}否则,如果(范围.位置请尝试以下选项
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;
}
}
编辑您的问题以显示您目前如何将其限制为仅接受某些字符?例如,显示代码。对于大写字母:谢谢@GuntisTreulands,这看起来将非常有效。@MichaelDautermann我没有限制字符的代码,正如我上面所说,我只能找到限制字符的方法一个或另一个,所以我还没有代码输入(可以链接到堆栈的职位,如果你想?)。