HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何在用户输入字符并防止无效字符时测试UITextField的字符输入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我设置UITextField的键盘以使用带小数风格的数字.所以用户只能输入数字一个小数.

我想做的是测试用户输入的输入,并防止输入多个小数,并将数字的小数部分限制在两个位置.我不想舍弃数字,也不想把输入视为一个数字.我只想阻止用户输入小数点右边的两位数字.

解决方法

解决方案最终变得相当微不足道.不幸的是,与此问题相关的许多问题和答案都是验证或格式化数值,而不是控制用户可以输入的内容.

以下实现的shouldChangeCharactersInRange代理方法是我的解决方案.与往常一样,正则表达式在这种情况下摇滚. RegExLib.com是有用的RegEx样品或解决方案的绝佳来源.我不是RegEx大师,总是努力把它们放在一起,所以任何改进建议都是值得欢迎的.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRangE)range replacementString:(NSString *)String
{
    if (textField == self.quantityTextField)
    {
        NSString *newString = [textField.text StringByreplacingCharactersInRange:range withString:string];

        NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$";

        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression 
                                                                               options:NSRegularExpressionCaseInsensitive 
                                                                                 error:nil];
        NSUInteger numberOfMatches = [regex numberOfMatchesinstring:newString
                                                            options:0
                                                              range:NsmakeRange(0,[newString length])];        
        if (numberOfMatches == 0)
            return NO;        
    }

    return YES;
}

上述代码允许用户输入这些值:1,1.1,1.11,.1,.11.请注意,此实现不会替换文本字段的字符串,这将导致递归.如果’newString’与正则表达式不匹配,则此解决方案只会拒绝用户输入的下一个字符.

大佬总结

以上是大佬教程为你收集整理的ios – 如何在用户输入字符并防止无效字符时测试UITextField的字符输入全部内容,希望文章能够帮你解决ios – 如何在用户输入字符并防止无效字符时测试UITextField的字符输入所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。