このようなシナリオでは、コードベースのルールよりも正規表現を使用することを常にお勧めします。
小数点以下1桁とその後の1文字を制限するには、以下を使用します。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Only allow one decimal point and 1 digit after it
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^[0-9]$*((\\.|,)[0-9]{0,1})?$";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString options:0 range:NSMakeRange(0, [newString length])];
return numberOfMatches != 0;
return YES;
}
上記のコードは、テキストフィールドに小数点が1つだけ含まれ、その後に1文字だけが含まれるようにします。
この正規表現で遊んで、要件に基づいてルールを作成できます。