diff --git a/README.md b/README.md index 0bc3aff..cd12e59 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,18 @@ pod 'TSCurrencyTextField', '~> 0.1.0' An example project is included in the Example directory. This should give you an idea how to use the class. +###textFieldPublicDelegate +Property was added to be able to call delegate method `- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;` if delegate exists to eventually decide if change should be made. Method is called with `string` parameter pointing to exactly the same string that will be put in text field right after method is called. +It allows to block text field editing e.g. if maximum length is reached: + +``` +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string +{ + const int maxPriceStringLength = 10; // '$' + 7 digits + 2 commas, e.g. $1,123,456 + return (string && string.length < maxPriceStringLength); +} +``` + ##Donate Please consider a small donation if you use TSCurrencyTextField in your projects. It'll make me feel good. diff --git a/TSCurrencyTextField/TSCurrencyTextField.h b/TSCurrencyTextField/TSCurrencyTextField.h index afeff79..c80010d 100644 --- a/TSCurrencyTextField/TSCurrencyTextField.h +++ b/TSCurrencyTextField/TSCurrencyTextField.h @@ -14,4 +14,6 @@ @property (nonatomic) NSNumber* amount; +@property (nonatomic, strong) id textFieldPublicDelegate; + @end diff --git a/TSCurrencyTextField/TSCurrencyTextField.m b/TSCurrencyTextField/TSCurrencyTextField.m index 6c4b0f5..ee9cd88 100644 --- a/TSCurrencyTextField/TSCurrencyTextField.m +++ b/TSCurrencyTextField/TSCurrencyTextField.m @@ -155,7 +155,14 @@ - (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.textFieldPublicDelegate) { + if ([textField.textFieldPublicDelegate textField:textField shouldChangeCharactersInRange:range replacementString:changed]) { + [textField setText: changed]; + } + } else { + [textField setText: changed]; + } int pos = textField.text.length - distanceFromEnd; if ( pos >= 0 && pos <= textField.text.length )