Skip to content

Commit 76d1b3c

Browse files
committed
Merge pull request #1 from 3months/bugfix/scrolling-crash
Fix crashes when tab on tab during scrolling tabview
2 parents ead467b + 369cd58 commit 76d1b3c

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

ICViewPager/ICViewPager/ViewPagerController.m

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ @interface ViewPagerController () <UIPageViewControllerDataSource, UIPageViewCon
126126

127127
@property (getter = isAnimatingToTab, assign) BOOL animatingToTab;
128128
@property (getter = isDefaultSetupDone, assign) BOOL defaultSetupDone;
129-
129+
@property BOOL isScrolling;
130130
// Colors
131131
@property (nonatomic) UIColor *indicatorColor;
132132
@property (nonatomic) UIColor *tabsViewBackgroundColor;
@@ -219,10 +219,13 @@ - (IBAction)handleTapGesture:(id)sender {
219219
UIView *tabView = tapGestureRecognizer.view;
220220
__block NSUInteger index = [self.tabs indexOfObject:tabView];
221221

222-
//if Tap is not selected Tab(new Tab)
223-
if (self.activeTabIndex != index) {
224-
// Select the tab
225-
[self selectTabAtIndex:index];
222+
// If user is not scrolling tabview
223+
if (!self.isScrolling) {
224+
// If tap is not selected tab (new tab)
225+
if (self.activeTabIndex != index) {
226+
// Select the tab
227+
[self selectTabAtIndex:index];
228+
}
226229
}
227230
}
228231

@@ -745,6 +748,7 @@ - (void)defaultSettings {
745748

746749
self.animatingToTab = NO;
747750
self.defaultSetupDone = NO;
751+
self.isScrolling = NO;
748752
}
749753
- (void)defaultSetup {
750754

@@ -983,6 +987,7 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
983987
}
984988
}
985989
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
990+
self.isScrolling = YES;
986991
if ([self.actualDelegate respondsToSelector:@selector(scrollViewWillBeginDragging:)]) {
987992
[self.actualDelegate scrollViewWillBeginDragging:scrollView];
988993
}
@@ -1014,6 +1019,7 @@ - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
10141019
}
10151020
}
10161021
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
1022+
self.isScrolling = NO;
10171023
if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidEndDecelerating:)]) {
10181024
[self.actualDelegate scrollViewDidEndDecelerating:scrollView];
10191025
}

0 commit comments

Comments
 (0)