From 83fc4fac8b8f490508c1c9a964583e17c932ad41 Mon Sep 17 00:00:00 2001 From: Fabio Martinez Date: Tue, 13 Feb 2018 11:43:23 -0300 Subject: [PATCH 1/2] fix bug when set text programmatically that show wrong mask --- Pod/Classes/VMaskTextField.m | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Pod/Classes/VMaskTextField.m b/Pod/Classes/VMaskTextField.m index 6220cb8..69c0152 100644 --- a/Pod/Classes/VMaskTextField.m +++ b/Pod/Classes/VMaskTextField.m @@ -25,11 +25,21 @@ - (instancetype)initWithFrame:(CGRect)frame -(void) setTextWithMask:(NSString *) text{ NSAssert(_mask!=nil, @"Mask is nil."); + int currentStartRange = 0; for (int i = 0; i < text.length; i++) { + currentStartRange = i; if (self.text.length == _mask.length) { break; } - [self shouldChangeCharactersInRange:NSMakeRange(self.text.length, 0) replacementString:[NSString stringWithFormat:@"%c",[text characterAtIndex:i]]]; + + //fix bug reported on https://github.com/viniciusmo/VMaskTextField/issues/20 + NSString *strToGetCharacterInMask = [_mask substringWithRange:NSMakeRange(0, i)]; + NSString *strWithCharacterInMask = [strToGetCharacterInMask stringByReplacingOccurrencesOfString:@"#" withString:@""]; + int totalOfCharacterInMask = [strWithCharacterInMask length]; + int totalOfRangeToAdd = [[[_mask substringWithRange:NSMakeRange(0, i+totalOfCharacterInMask)] stringByReplacingOccurrencesOfString:@"#" withString:@""] length]; + currentStartRange += totalOfRangeToAdd; + + [self shouldChangeCharactersInRange:NSMakeRange(currentStartRange, 0) replacementString:[NSString stringWithFormat:@"%c",[text characterAtIndex:i]]]; } } From 5c52679a51fb262eaf5fd1e0177d766c9022008a Mon Sep 17 00:00:00 2001 From: Fabio Martinez Date: Mon, 19 Feb 2018 23:20:25 -0300 Subject: [PATCH 2/2] refactoring raw method to include all characters from mask not only # --- Pod/Classes/VMaskTextField.m | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Pod/Classes/VMaskTextField.m b/Pod/Classes/VMaskTextField.m index 69c0152..0248234 100644 --- a/Pod/Classes/VMaskTextField.m +++ b/Pod/Classes/VMaskTextField.m @@ -57,15 +57,8 @@ - (BOOL)shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString } -(NSString *)raw{ - NSMutableString *string = [NSMutableString new]; - for (int i=0; i