From e0bc564e8ab3df188f4587c35b6e86014c3df0c2 Mon Sep 17 00:00:00 2001 From: Fedya Skitsko Date: Tue, 28 Oct 2014 11:26:43 +0200 Subject: [PATCH 1/2] Make onChangeCharacterInRange block return BOOL value if something should be checked outside cell. --- RETableViewManager/Cells/RETableViewTextCell.m | 8 +++++--- RETableViewManager/Items/RETextItem.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/RETableViewManager/Cells/RETableViewTextCell.m b/RETableViewManager/Cells/RETableViewTextCell.m index 807c69f..514a28b 100644 --- a/RETableViewManager/Cells/RETableViewTextCell.m +++ b/RETableViewManager/Cells/RETableViewTextCell.m @@ -196,15 +196,17 @@ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + BOOL shouldChange = YES; + if (self.item.onChangeCharacterInRange) - self.item.onChangeCharacterInRange(self.item, range, string); + shouldChange = self.item.onChangeCharacterInRange(self.item, range, string); if (self.item.charactersLimit) { NSUInteger newLength = textField.text.length + string.length - range.length; - return newLength <= self.item.charactersLimit; + shouldChange = newLength <= self.item.charactersLimit; } - return YES; + return shouldChange; } diff --git a/RETableViewManager/Items/RETextItem.h b/RETableViewManager/Items/RETextItem.h index 432e253..45bc233 100644 --- a/RETableViewManager/Items/RETextItem.h +++ b/RETableViewManager/Items/RETextItem.h @@ -55,7 +55,7 @@ @property (copy, readwrite, nonatomic) void (^onEndEditing)(RETextItem *item); @property (copy, readwrite, nonatomic) void (^onChange)(RETextItem *item); @property (copy, readwrite, nonatomic) void (^onReturn)(RETextItem *item); -@property (copy, readwrite, nonatomic) void (^onChangeCharacterInRange)(RETextItem *item, NSRange range, NSString *replacementString); +@property (copy, readwrite, nonatomic) BOOL (^onChangeCharacterInRange)(RETextItem *item, NSRange range, NSString *replacementString); + (instancetype)itemWithTitle:(NSString *)title value:(NSString *)value; From 70c29e856afbe56969eb1406e9d725b585d8d95d Mon Sep 17 00:00:00 2001 From: Fedya Skitsko Date: Tue, 28 Oct 2014 11:40:44 +0200 Subject: [PATCH 2/2] Check should change in every if statement --- RETableViewManager/Cells/RETableViewTextCell.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/RETableViewManager/Cells/RETableViewTextCell.m b/RETableViewManager/Cells/RETableViewTextCell.m index 514a28b..d0da887 100644 --- a/RETableViewManager/Cells/RETableViewTextCell.m +++ b/RETableViewManager/Cells/RETableViewTextCell.m @@ -198,14 +198,14 @@ { BOOL shouldChange = YES; - if (self.item.onChangeCharacterInRange) - shouldChange = self.item.onChangeCharacterInRange(self.item, range, string); - if (self.item.charactersLimit) { NSUInteger newLength = textField.text.length + string.length - range.length; shouldChange = newLength <= self.item.charactersLimit; } + if (self.item.onChangeCharacterInRange && shouldChange) + shouldChange = self.item.onChangeCharacterInRange(self.item, range, string); + return shouldChange; }