限制多个 UITextField 的长度
Posted
技术标签:
【中文标题】限制多个 UITextField 的长度【英文标题】:Limit the length of multiple UITextFields 【发布时间】:2011-05-29 22:27:29 【问题描述】:我有四个UITextField
s,想限制每个的长度,但它们的长度都不一样。到目前为止,我有以下代码,但它不能正常工作
define MAXLENGTH 5
define MAXQTY 3
define MAXSIZE 4
define MAXBRAND 10
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
int lengtha = [brand.text length] ;
NSLog(@"lenghta = %d",lengtha);
if (lengtha >= MAXBRAND && ![string isEqualToString:@""])
brand.text = [brand.text substringToIndex:MAXBRAND];
return NO;
return YES;
int lengthb = [qty.text length] ;
NSLog(@"lenghtb = %d",lengtha);
if (lengthb >= MAXQTY && ![string isEqualToString:@""])
qty.text = [qty.text substringToIndex:MAXQTY];
return NO;
return YES;
int lengthc = [size.text length] ;
NSLog(@"lenghtc = %d",lengtha);
if (lengthc >= MAXSIZE && ![string isEqualToString:@""])
size.text = [size.text substringToIndex:MAXSIZE];
return NO;
return YES;
int lengthd = [price.text length] ;
NSLog(@"lenghtd = %d",lengtha);
if (lengthd >= MAXLENGTH && ![string isEqualToString:@""])
price.text = [price.text substringToIndex:MAXLENGTH];
return NO;
return YES;
【问题讨论】:
一旦您的代码到达第一个“返回 YES;”在 if 语句之后,没有其他任何东西得到处理。你的逻辑不正确。 【参考方案1】:如果品牌、数量、尺寸和价格是实例变量(或属性)并连接到您的 UITextFields,您可以试试这个:
define MAXLENGTH 5
define MAXQTY 3
define MAXSIZE 4
define MAXBRAND 10
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (textField == brand)
int lengtha = [brand.text length];
NSLog(@"lenghta = %d",lengtha);
if (lengtha >= MAXBRAND && ![string isEqualToString:@""])
brand.text = [brand.text substringToIndex:MAXBRAND];
return NO;
return YES;
else if (textField == qty)
int lengthb = [qty.text length];
NSLog(@"lenghtb = %d",lengthb);
if (lengthb >= MAXQTY && ![string isEqualToString:@""])
qty.text = [qty.text substringToIndex:MAXQTY];
return NO;
return YES;
else if (textField == size)
int lengthc = [size.text length];
NSLog(@"lenghtc = %d",lengthc);
if (lengthc >= MAXSIZE && ![string isEqualToString:@""])
size.text = [size.text substringToIndex:MAXSIZE];
return NO;
return YES;
else if (textField == price)
int lengthd = [price.text length];
NSLog(@"lenghtd = %d",lengthd);
if (lengthd >= MAXLENGTH && ![string isEqualToString:@""])
price.text = [price.text substringToIndex:MAXLENGTH];
return NO;
return YES;
return YES;
【讨论】:
我已根据您的建议修改了代码,但我仍然得到相同的结果,文本字段没有限制,NSLog 没有报告字符数。我在 .h 文件中设置了 UITextfields,也在 .h 文件中设置了 IBOutlets 我已修复它,您的代码很棒,我在 viewDidLoad 下添加了 brand.delegate=self,现在效果很好,感谢您的帮助 是的,您必须为所有四个 UITextField 设置委托。我还稍微编辑了上面的代码。在所有四种情况下,您总是 NSLogging lengtha,而不是每次都使用正确的变量(lengtha、lengthb、lengthc、lengthd)。以上是关于限制多个 UITextField 的长度的主要内容,如果未能解决你的问题,请参考以下文章