Ios 强制UITextField的第一个字符为数字,第二个字符为字母数字

Ios 强制UITextField的第一个字符为数字,第二个字符为字母数字,ios,objective-c,Ios,Objective C,我正试图找到一种方法来“强制”UITextField遵循set方法。例如: 我已经成功地将其限制为最多只能接受4个字符,但我需要它将4个字符的限制设置为第一个字符“数字”第二个字符“字母数字”第三/第四个字符为“数字”,例如:1Z11 我也不知道你是否可以强制使用大写字母,或者不像通过ASCII或VBA那样 任何帮助都是完美的,我已经环顾了四周,但我只能找到如何强制一个或另一个(全数字或全字母数字) 亲切的问候 杰米 -编辑一个- 我没有限制字符的代码,如上所述,我只能找到限制其中一个字符的方法

我正试图找到一种方法来“强制”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我没有限制字符的代码,正如我上面所说,我只能找到限制字符的方法一个或另一个,所以我还没有代码输入(可以链接到堆栈的职位,如果你想?)。