From 6dd23028a92cce4e8ca629b93a333f2535b2d4ab Mon Sep 17 00:00:00 2001 From: Darrarski Date: Tue, 8 Apr 2014 23:19:41 +0200 Subject: [PATCH] Animate scroll view inset changes along with keyboard animation --- EKKeyboardAvoiding/EKKeyboardAvoidingProvider.m | 7 +++++-- EKKeyboardAvoiding/EKKeyboardFrameListener.h | 3 +++ EKKeyboardAvoiding/EKKeyboardFrameListener.m | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/EKKeyboardAvoiding/EKKeyboardAvoidingProvider.m b/EKKeyboardAvoiding/EKKeyboardAvoidingProvider.m index 913c98c..36004d2 100644 --- a/EKKeyboardAvoiding/EKKeyboardAvoidingProvider.m +++ b/EKKeyboardAvoiding/EKKeyboardAvoidingProvider.m @@ -90,8 +90,11 @@ - (void)resetAvoidingContentInset - (void)applyAvoidingContentInset:(UIEdgeInsets)avoidingInset { - [[self scrollView] setContentInset:avoidingInset]; - [[self scrollView] setScrollIndicatorInsets:avoidingInset]; + NSTimeInterval animationDuration = [self.keyboardListener.keyboardInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView animateWithDuration:animationDuration animations:^{ + [[self scrollView] setContentInset:avoidingInset]; + [[self scrollView] setScrollIndicatorInsets:avoidingInset]; + }]; } - (UIEdgeInsets)calculateExtraContentInset diff --git a/EKKeyboardAvoiding/EKKeyboardFrameListener.h b/EKKeyboardAvoiding/EKKeyboardFrameListener.h index 702f9a4..7e40bd3 100644 --- a/EKKeyboardAvoiding/EKKeyboardFrameListener.h +++ b/EKKeyboardAvoiding/EKKeyboardFrameListener.h @@ -20,4 +20,7 @@ /// Last observed keyboard frame @property (nonatomic,readonly) CGRect keyboardFrame; +/// Last observed keyboard change info +@property (nonatomic,strong,readonly) NSDictionary *keyboardInfo; + @end diff --git a/EKKeyboardAvoiding/EKKeyboardFrameListener.m b/EKKeyboardAvoiding/EKKeyboardFrameListener.m index 82d0318..d836c4f 100644 --- a/EKKeyboardAvoiding/EKKeyboardFrameListener.m +++ b/EKKeyboardAvoiding/EKKeyboardFrameListener.m @@ -44,7 +44,7 @@ - (CGRect)convertedKeyboardFrameForView:(UIView *)view - (void)startNotificationsObseving { - [self observeNotificationNamed:UIKeyboardDidChangeFrameNotification + [self observeNotificationNamed:UIKeyboardWillChangeFrameNotification action:@selector(keyboardDidChangeFrame:)]; }