From e099a8601783b93f60b9438cc4c9163f0e9f3352 Mon Sep 17 00:00:00 2001 From: John Haager Date: Wed, 14 Jan 2015 17:11:37 -0800 Subject: [PATCH 1/4] Updated the UIResponder methods to call the FKTextField delegate methods for beginning and ending editing of the text field. --- lib/FKTextField/FKTextField.m | 52 +++++++++++++++++++++++++++++---- lib/FKTokenField/FKTokenField.m | 1 + 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/lib/FKTextField/FKTextField.m b/lib/FKTextField/FKTextField.m index 69e1f9d..8423066 100644 --- a/lib/FKTextField/FKTextField.m +++ b/lib/FKTextField/FKTextField.m @@ -169,22 +169,64 @@ - (void)setEditable:(BOOL)editable - (BOOL)canBecomeFirstResponder { - return YES; + BOOL becoming = YES ; + + if ( _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) + { + becoming = [ _delegate textFieldShouldBeginEditing:self ] ; + } + + return becoming; +} + +- (BOOL)canResignFirstResponder +{ + BOOL resigning = YES ; + + if ( _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) + { + resigning = [ _delegate textFieldShouldEndEditing:self ] ; + } + + return resigning ; } - (BOOL)resignFirstResponder { - self.editing = NO; + BOOL resigning = YES ; + + resigning = [ super resignFirstResponder ] ; - return [super resignFirstResponder]; + if ( resigning ) + { + self.editing = NO; + if ( _delegate && ( [_delegate respondsToSelector:@selector(textFieldDidEndEditing:) ])) + { + [_delegate textFieldDidEndEditing:self ] ; + } + } + + return resigning ; } - (BOOL)becomeFirstResponder { - self.editing = YES; + BOOL becoming = YES ; + + becoming = [ super becomeFirstResponder ] ; + + if ( becoming ) + { + self.editing = YES; + + if ( _delegate && [_delegate respondsToSelector:@selector(textFieldDidBeginEditing:)]) + { + [ _delegate textFieldDidBeginEditing:self ] ; + } + } - return [super becomeFirstResponder]; + return becoming; } - (UIView *)inputAccessoryView diff --git a/lib/FKTokenField/FKTokenField.m b/lib/FKTokenField/FKTokenField.m index d52a753..17f17ab 100644 --- a/lib/FKTokenField/FKTokenField.m +++ b/lib/FKTokenField/FKTokenField.m @@ -269,6 +269,7 @@ - (void)layoutSubviews CGRect contentViewFrame = _contentView.frame; contentViewFrame.origin.x = offset.x; contentViewFrame.origin.y = offset.y + 2; // check with cell for insets... + contentViewFrame.size.height = offset.y + offsetTolerance ; // Update content view _contentView.frame = contentViewFrame; From c8046c72f50d1361b14342dca01857c3a3a58e7a Mon Sep 17 00:00:00 2001 From: John Haager Date: Thu, 15 Jan 2015 09:55:49 -0800 Subject: [PATCH 2/4] Rearranged the call sequence and insured that the delegate methods are only called if the text field is in a state that indicates they should be called. (e.g. Don't call shouldBeginEditing if the field is already in editing mode.) --- lib/FKTextField/FKTextField.m | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/FKTextField/FKTextField.m b/lib/FKTextField/FKTextField.m index 8423066..61dad6b 100644 --- a/lib/FKTextField/FKTextField.m +++ b/lib/FKTextField/FKTextField.m @@ -171,11 +171,6 @@ - (BOOL)canBecomeFirstResponder { BOOL becoming = YES ; - if ( _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) - { - becoming = [ _delegate textFieldShouldBeginEditing:self ] ; - } - return becoming; } @@ -183,11 +178,6 @@ - (BOOL)canResignFirstResponder { BOOL resigning = YES ; - if ( _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) - { - resigning = [ _delegate textFieldShouldEndEditing:self ] ; - } - return resigning ; } @@ -197,7 +187,12 @@ - (BOOL)resignFirstResponder resigning = [ super resignFirstResponder ] ; - if ( resigning ) + if ( self.editing && resigning && _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) + { + resigning = [ _delegate textFieldShouldEndEditing:self ] ; + } + + if ( self.editing && resigning ) { self.editing = NO; @@ -216,7 +211,12 @@ - (BOOL)becomeFirstResponder becoming = [ super becomeFirstResponder ] ; - if ( becoming ) + if ( !self.editing && becoming && _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) + { + becoming = [ _delegate textFieldShouldBeginEditing:self ] ; + } + + if ( !self.editing && becoming ) { self.editing = YES; From 70083e8af2fa06666fde43f562aca1f20a0b8620 Mon Sep 17 00:00:00 2001 From: John Haager Date: Thu, 15 Jan 2015 11:14:20 -0800 Subject: [PATCH 3/4] Cleaning up the code to conform to existing coding style. --- lib/FKTextField/FKTextField.m | 41 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/lib/FKTextField/FKTextField.m b/lib/FKTextField/FKTextField.m index 61dad6b..c89dc93 100644 --- a/lib/FKTextField/FKTextField.m +++ b/lib/FKTextField/FKTextField.m @@ -169,64 +169,55 @@ - (void)setEditable:(BOOL)editable - (BOOL)canBecomeFirstResponder { - BOOL becoming = YES ; - - return becoming; -} - -- (BOOL)canResignFirstResponder -{ - BOOL resigning = YES ; - - return resigning ; + return YES; } - (BOOL)resignFirstResponder { - BOOL resigning = YES ; + BOOL willResign = YES ; - resigning = [ super resignFirstResponder ] ; + willResign = [super resignFirstResponder] ; - if ( self.editing && resigning && _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) + if ( self.editing && willResign && _delegate && [_delegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) { - resigning = [ _delegate textFieldShouldEndEditing:self ] ; + willResign = [_delegate textFieldShouldEndEditing:self] ; } - if ( self.editing && resigning ) + if ( self.editing && willResign ) { self.editing = NO; - if ( _delegate && ( [_delegate respondsToSelector:@selector(textFieldDidEndEditing:) ])) + if ( _delegate && ( [_delegate respondsToSelector:@selector(textFieldDidEndEditing:)])) { - [_delegate textFieldDidEndEditing:self ] ; + [_delegate textFieldDidEndEditing:self] ; } } - return resigning ; + return willResign ; } - (BOOL)becomeFirstResponder { - BOOL becoming = YES ; + BOOL willBecome = YES ; - becoming = [ super becomeFirstResponder ] ; + willBecome = [super becomeFirstResponder] ; - if ( !self.editing && becoming && _delegate && [ _delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) + if ( !self.editing && willBecome && _delegate && [_delegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) { - becoming = [ _delegate textFieldShouldBeginEditing:self ] ; + willBecome = [_delegate textFieldShouldBeginEditing:self] ; } - if ( !self.editing && becoming ) + if ( !self.editing && willBecome ) { self.editing = YES; if ( _delegate && [_delegate respondsToSelector:@selector(textFieldDidBeginEditing:)]) { - [ _delegate textFieldDidBeginEditing:self ] ; + [_delegate textFieldDidBeginEditing:self] ; } } - return becoming; + return willBecome; } - (UIView *)inputAccessoryView From 9e939b84ec3d6e9caf040a853d422782a55275fb Mon Sep 17 00:00:00 2001 From: John Haager Date: Thu, 15 Jan 2015 11:19:21 -0800 Subject: [PATCH 4/4] Removing stray code change that isn't related to the text field delegate invocation. --- lib/FKTokenField/FKTokenField.m | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/FKTokenField/FKTokenField.m b/lib/FKTokenField/FKTokenField.m index 17f17ab..d52a753 100644 --- a/lib/FKTokenField/FKTokenField.m +++ b/lib/FKTokenField/FKTokenField.m @@ -269,7 +269,6 @@ - (void)layoutSubviews CGRect contentViewFrame = _contentView.frame; contentViewFrame.origin.x = offset.x; contentViewFrame.origin.y = offset.y + 2; // check with cell for insets... - contentViewFrame.size.height = offset.y + offsetTolerance ; // Update content view _contentView.frame = contentViewFrame;