objective-c – 如何仅在UITextField中输入数字并限制最大长度?

objective-c – 如何仅在UITextField中输入数字并限制最大长度?,第1张

概述在UITextField中,我们仅输入数字,并限制最多3个数字,我使用以下代码 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSUInteger newLength = [te 在UITextFIEld中,我们仅输入数字,并限制最多3个数字,我使用以下代码
- (BOol)textFIEld:(UITextFIEld *)textFIEld shouldChangeCharactersInRange:(NSRange)range replacementString:(Nsstring *)string  {    NSUInteger newLength = [textFIEld.text length] + [string length] - range.length;    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY] invertedSet];    Nsstring *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];    while (newLength < CHaraCTER_liMIT) {        return [string isEqualToString:filtered];    }/* limits the no of characters to be enter in text fIEld */    return (newLength > CHaraCTER_liMIT ) ? NO : YES; }

当我按长按文本框(如下图),并在两个数字之间输入字符串,它也允许所有特殊字符和承租人.

解决方法 不是我不喜欢 the answer I wrote at this question,那也是 copy & pasted这里.我会尝试解释你的错误.

这个答案是基于你的常量定义如下的假设:

#define NUMBERS_ONLY @"1234567890"#define CHaraCTER_liMIT 3

您的逻辑失败的原因是,当newLength将等于CHaraCTER_liMIT时,您永远不会处理该事件.

为了说明你的文本框是空的,你要求将字符串@“ABC”粘贴到文本域,你的委托方法被调用.您创建过滤的字符串,正确计算为空字符串,您不能等待执行行return [string isEqualToString:filtered];但是,由于newLength为3,因此您不符合while循环的条目要求,所以您从未真正评估该行.所以简单的return(newLength> CHaraCTER_liMIT)?不:是决定返回值.

如果您的CHaraCTER_liMIT由于某种原因实际上为4,则只需将“ABCD”设为逻辑仍然适用的字符串即可.

这是一个简单的例子,您的功能更正了工作.再次,我假设CHaraCTER_liMIT等于3.

- (BOol)textFIEld:(UITextFIEld *)textFIEld shouldChangeCharactersInRange:(NSRange)range replacementString:(Nsstring *)string  {    NSUInteger newLength = [textFIEld.text length] + [string length] - range.length;    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY] invertedSet];    Nsstring *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];    return (([string isEqualToString:filtered])&&(newLength <= CHaraCTER_liMIT));}
总结

以上是内存溢出为你收集整理的objective-c – 如何仅在UITextField中输入数字并限制最大长度?全部内容,希望文章能够帮你解决objective-c – 如何仅在UITextField中输入数字并限制最大长度?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1251063.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存