次のコマンドでカスタムUITextFieldを作成したいと思います。
1)小数点は1つだけ許可されます。2)ユーザーが入力できる小数点以下の最大数(プロパティになります)、たとえば2。
これを達成するための最善は何でしょうか?
UITextFieldから継承する新しいクラスを作成しました。
私がstackoverflowで見つけたポイント#1については、次の方法に頼る必要があります。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Implementing it like this:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count]>=2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
return !([sepStr length]>1);
}
return YES;
}
最初の問題は、これがUITextFieldデリゲートのメソッドであり、UITextFieldから継承する新しいオブジェクトでは使用できないことです。カスタムUITextFieldにデフォルトで実装してもらいたいのですが、そのようなメソッドはありません。
2番目の問題は、小数点が「。」である可能性があることです。また "、"。パッドの小数点を見つける方法はありますか?
ユーザーが入力できるデシマの最大数であるポイント#2については、小数点以下2桁があるかどうかを確認します。そうであれば、UItextField.textを変更しません。
ありがとう
ニコラ