【问题标题】:Forcing UITextField to have first character as numeric and second as alphanumeric强制 UITextField 将第一个字符作为数字,第二个作为字母数字
【发布时间】:2014-07-08 23:10:02
【问题描述】:

我正在尝试找出一种“强制”UITextField 遵循设置方法的方法。例如:

我已成功将其限制为最多只能接受 4 个字符,但我需要将 4 个字符限制设置为第一个字符“数字”第二个字符“AlphaNumeric”第三/第四个为“数字”例如:1Z11

我也不知道您是否可以像通过 ASCII 或 VBA 那样强制使用大写字母。

任何帮助都是完美的,我环顾四周,但我只能找到如何强制其中一个(全是数字或全是字母数字)。

最诚挚的问候 杰米

-编辑一个-

如上所述,我没有限制字符的代码,我只能找到限制其中一个的方法,所以我还没有输入代码(如果需要,可以链接到堆栈帖子吗?)。

【问题讨论】:

  • 如何编辑您的问题以显示您目前如何将其限制为仅接受某些字符?即显示代码。
  • 感谢@GuntisTreulands,这看起来会很完美。
  • @MichaelDautermann 我没有限制字符的代码,正如我上面所说的,我只能找到限制其中一个的方法,所以我还没有输入代码(如果可以链接到堆栈帖子,如果你想要吗?)。

标签: ios objective-c


【解决方案1】:

请尝试以下方法

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;
    }

}

【讨论】:

    【解决方案2】:

    尝试为委托方法实现类似的东西:

     - (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;
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多