diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h index 0fcd8a5..be8e859 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.h @@ -82,6 +82,8 @@ typedef NS_ENUM(NSUInteger, XLPagerTabStripDirection) { @property (readonly) NSUInteger currentIndex; @property BOOL skipIntermediateViewControllers; +// When user scroll the pager, waiting did end decelerating update page index, Default is NO. +@property BOOL shouldDidEndDeceleratingUpdatePage; -(void)moveToViewControllerAtIndex:(NSUInteger)index; -(void)moveToViewController:(UIViewController *)viewController; diff --git a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m index 03ec878..9898e09 100644 --- a/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m +++ b/XLPagerTabStrip/XL/Controllers/XLPagerTabStripViewController.m @@ -71,6 +71,7 @@ _dataSource = self; _lastContentOffset = 0.0f; _skipIntermediateViewControllers = YES; + _shouldDidEndDeceleratingUpdatePage = NO; } - (void)viewDidLoad @@ -212,13 +213,20 @@ return fmodf(self.containerView.contentOffset.x, [self pageWidth]) / [self pageWidth]; } +- (void)updateCurrentPage +{ + NSUInteger currentPage = [self pageForContentOffset:self.containerView.contentOffset.x]; + if (currentPage != self.currentIndex){ + self.currentIndex = currentPage; + } +} + -(void)updateContent { NSArray * childViewControllers = self.pagerTabStripChildViewControllers; self.containerView.contentSize = CGSizeMake(CGRectGetWidth(self.containerView.bounds) * childViewControllers.count, self.containerView.contentSize.height); - NSUInteger currentPage = [self pageForContentOffset:self.containerView.contentOffset.x]; - if (currentPage != self.currentIndex){ - self.currentIndex = currentPage; + if (!self.shouldDidEndDeceleratingUpdatePage) { + [self updateCurrentPage]; } [childViewControllers enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { @@ -296,6 +304,12 @@ } } +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.shouldDidEndDeceleratingUpdatePage) { + [self updateCurrentPage]; + } +} + -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { if (self.containerView == scrollView && _originalPagerTabStripChildViewControllers){