2011-06-28 23 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

私はあなたがここに実現したいのかわからない、よくあなたはこの1つを試すことができ、それが役に立てば幸い!

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

return YES; 
} 
2

次のようにデリゲートメソッドを実装 -

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

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

を私たちは、結果の文字列があることと、その長さをチェックするかを取得します。こうしてバックスペースが機能します。

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; 
} 
関連する問題