2011-06-28 39 views
2

在我的项目中,我必须将UITextField的长度限制为6个字符。这工作非常好。一旦我结束编辑并再次开始编辑,并单击退格我的应用程序崩溃。如何在UITextField中允许退格?

下面是代码:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSUInteger newLength = [txtLicense.text length] + [strNumber length] - range.length; 
    return (newLength > 6) ? NO : YES; 
} 

回答

5

试试这个。

- (BOOL)textField:(UITextField *)inputTextField shouldChangeCharactersInRange (NSRange)range replacementString:(NSString *)string 
{ 
    return (textField.text.length >= 5 && range.length == 0) ? NO : YES; 
} 
+1

完美。绝对是我想要的。谢谢。 :) –

0

我不知道你想在这里实现什么,那么你可以试试这个,希望它可以帮助!

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range 
                    withString:string]; 

    return ([toBeString length] > 6) ? NO : YES; 
} 

我们会得到什么结果字符串会,并检查它的长度 -

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
if (string && [string length] && [textField.text length] <= 6) { 
return NO; 
} 

return YES; 
} 
2

如下实施你的委托方法。这种方式退格可行。

2

如果您想在UITextField中实现最大长度验证,您可以使用我的一个工作项目中的以下工作代码。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if ([textField.text length] > 6) { 
     textField.text = [textField.text substringToIndex:6]; 
     return NO; 
    } 
    return YES; 
} 
相关问题