2011-06-28 42 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; 
} 
相關問題