From 56477775c001ebb9574ce4e62e62d206f7a45fde Mon Sep 17 00:00:00 2001 From: Daniel Amitay Date: Wed, 26 Dec 2012 18:33:18 -0500 Subject: [PATCH] Refactor KVO --- DAKeyboardControl/DAKeyboardControl.m | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/DAKeyboardControl/DAKeyboardControl.m b/DAKeyboardControl/DAKeyboardControl.m index 1889ba3b..c5abb913 100644 --- a/DAKeyboardControl/DAKeyboardControl.m +++ b/DAKeyboardControl/DAKeyboardControl.m @@ -140,6 +140,11 @@ - (void)addKeyboardControl:(BOOL)panning actionHandler:(DAKeyboardDidMoveBlock)a [self.keyboardPanRecognizer setDelegate:self]; [self addGestureRecognizer:self.keyboardPanRecognizer]; } + + [self addObserver:self + forKeyPath:@"keyboardActiveView.frame" + options:0 + context:NULL]; } - (CGRect)keyboardFrameInView @@ -195,6 +200,7 @@ - (void)removeKeyboardControl // Unregister any gesture recognizer [self removeGestureRecognizer:self.keyboardPanRecognizer]; + [self removeObserver:self forKeyPath:@"keyboardActiveView.frame"]; // Release a few properties self.keyboardDidMoveBlock = nil; @@ -343,9 +349,9 @@ - (void)observeValueForKeyPath:(NSString *)keyPath change:(NSDictionary *)change context:(void *)context { - if([keyPath isEqualToString:@"frame"] && object == self.keyboardActiveView) + if([keyPath isEqualToString:@"keyboardActiveView.frame"] && self.keyboardActiveView) { - CGRect keyboardEndFrameWindow = [[object valueForKeyPath:keyPath] CGRectValue]; + CGRect keyboardEndFrameWindow = self.keyboardActiveView.frame; CGRect keyboardEndFrameView = [self convertRect:keyboardEndFrameWindow fromView:self.keyboardActiveView.window]; if (self.keyboardDidMoveBlock && !self.keyboardActiveView.hidden) { @@ -611,15 +617,6 @@ - (UIView *)keyboardActiveView - (void)setKeyboardActiveView:(UIView *)keyboardActiveView { [self willChangeValueForKey:@"keyboardActiveView"]; - [self.keyboardActiveView removeObserver:self - forKeyPath:@"frame"]; - if (keyboardActiveView) - { - [keyboardActiveView addObserver:self - forKeyPath:@"frame" - options:0 - context:NULL]; - } objc_setAssociatedObject(self, &UIViewKeyboardActiveView, keyboardActiveView,