From 96ee24a14ee6ac07b842677c43a86324b81bfeb6 Mon Sep 17 00:00:00 2001 From: rtoshiro Date: Thu, 27 Nov 2014 18:28:52 -0200 Subject: [PATCH 1/3] - Make TSCurrencyTextField fowards textField:shouldChangeCharactersInRange:replacementString: to original delegate --- TSCurrencyTextField/TSCurrencyTextField.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/TSCurrencyTextField/TSCurrencyTextField.m b/TSCurrencyTextField/TSCurrencyTextField.m index 6c4b0f5..6781f08 100644 --- a/TSCurrencyTextField/TSCurrencyTextField.m +++ b/TSCurrencyTextField/TSCurrencyTextField.m @@ -155,7 +155,13 @@ - (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 ([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 ) From ad39b262aea18d0e6207344cd97c2713265ed59e Mon Sep 17 00:00:00 2001 From: rtoshiro Date: Thu, 27 Nov 2014 18:38:29 -0200 Subject: [PATCH 2/3] - Added: maximumLength property --- TSCurrencyTextField/TSCurrencyTextField.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TSCurrencyTextField/TSCurrencyTextField.m b/TSCurrencyTextField/TSCurrencyTextField.m index 6781f08..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,6 +156,9 @@ - (BOOL) textField: (TSCurrencyTextField *) textField shouldChangeCharactersInRa int distanceFromEnd = textField.text.length - (range.location + range.length); NSString* changed = [textField.text stringByReplacingCharactersInRange: range withString: string]; + 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]) From 221f8dbe2e608f40b71e4668edadf47748dc8423 Mon Sep 17 00:00:00 2001 From: rtoshiro Date: Thu, 27 Nov 2014 18:38:29 -0200 Subject: [PATCH 3/3] - Added: maximumLength property --- TSCurrencyTextField/TSCurrencyTextField.h | 1 + TSCurrencyTextField/TSCurrencyTextField.m | 4 ++++ 2 files changed, 5 insertions(+) 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 6781f08..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,6 +156,9 @@ - (BOOL) textField: (TSCurrencyTextField *) textField shouldChangeCharactersInRa int distanceFromEnd = textField.text.length - (range.location + range.length); NSString* changed = [textField.text stringByReplacingCharactersInRange: range withString: string]; + 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])