diff --git a/TSCurrencyTextField/TSCurrencyTextField.h b/TSCurrencyTextField/TSCurrencyTextField.h index afeff79..2064eec 100644 --- a/TSCurrencyTextField/TSCurrencyTextField.h +++ b/TSCurrencyTextField/TSCurrencyTextField.h @@ -13,5 +13,6 @@ @property (nonatomic) NSNumberFormatter* currencyNumberFormatter; @property (nonatomic) NSNumber* amount; +@property (nonatomic, assign) NSUInteger maximumLength; @end diff --git a/TSCurrencyTextField/TSCurrencyTextField.m b/TSCurrencyTextField/TSCurrencyTextField.m index 6c4b0f5..7c30d3b 100644 --- a/TSCurrencyTextField/TSCurrencyTextField.m +++ b/TSCurrencyTextField/TSCurrencyTextField.m @@ -43,6 +43,7 @@ - (id) initWithFrame: (CGRect) frame - (void) TSCurrencyTextField_commonInit { + _maximumLength = 0; _invalidInputCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; _currencyNumberFormatter = [[NSNumberFormatter alloc] init]; @@ -155,7 +156,16 @@ - (BOOL) textField: (TSCurrencyTextField *) textField shouldChangeCharactersInRa int distanceFromEnd = textField.text.length - (range.location + range.length); NSString* changed = [textField.text stringByReplacingCharactersInRange: range withString: string]; - [textField setText: changed]; + if (textField.maximumLength > 0 && changed.length > textField.maximumLength) + return NO; + + if ([self.delegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)]) + { + if ([self.delegate textField:textField shouldChangeCharactersInRange:range replacementString:string]) + [textField setText:changed]; + } + else + [textField setText:changed]; int pos = textField.text.length - distanceFromEnd; if ( pos >= 0 && pos <= textField.text.length )