diff --git a/TLYShyNavBar/TLYShyNavBarManager.h b/TLYShyNavBar/TLYShyNavBarManager.h index b4484ab..080e4cc 100644 --- a/TLYShyNavBar/TLYShyNavBarManager.h +++ b/TLYShyNavBar/TLYShyNavBarManager.h @@ -9,6 +9,8 @@ #import #import +@protocol TLYShyNavBarManagerDelegate; + /* CLASS DESCRIPTION: * ================== * Manages the relationship between a scrollView and a view @@ -55,6 +57,24 @@ @property (nonatomic) BOOL disable; +/* Use this to be notified about contraction and expansion events. + */ +@property (nonatomic, weak) id delegate; + +@end + +/* PROTOCOL DESCRIPTION: + * ===================== + * This protocol is used to notify an optional TLYShyNavBarManager's delegate + * when a contraction or expansion finishes animating. + */ +@protocol TLYShyNavBarManagerDelegate + +@optional + +- (void)shyNavBarManagerDidFinishContracting:(TLYShyNavBarManager *) shyNavBarManager; +- (void)shyNavBarManagerDidFinishExpanding:(TLYShyNavBarManager *) shyNavBarManager; + @end diff --git a/TLYShyNavBar/TLYShyNavBarManager.m b/TLYShyNavBar/TLYShyNavBarManager.m index 09682d1..bd3e011 100644 --- a/TLYShyNavBar/TLYShyNavBarManager.m +++ b/TLYShyNavBar/TLYShyNavBarManager.m @@ -315,10 +315,23 @@ static inline CGFloat AACStatusBarHeight() CGPoint newContentOffset = self.scrollView.contentOffset; newContentOffset.y -= deltaY; - + + __weak typeof(self) weakSelf = self; [UIView animateWithDuration:0.2 animations:^{ - self.scrollView.contentOffset = newContentOffset; + weakSelf.scrollView.contentOffset = newContentOffset; + } + completion:^(BOOL finished) { + typeof(weakSelf) strongSelf = weakSelf; + if (strongSelf.isContracting) { + if ([strongSelf.delegate respondsToSelector:@selector(shyNavBarManagerDidFinishContracting:)]) { + [strongSelf.delegate shyNavBarManagerDidFinishContracting:strongSelf]; + } + } else { + if ([strongSelf.delegate respondsToSelector:@selector(shyNavBarManagerDidFinishExpanding:)]) { + [strongSelf.delegate shyNavBarManagerDidFinishExpanding:strongSelf]; + } + } }]; }