-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Tabs switch incorrectly when swipe is released over another element #1365
Comments
The versions mentioned in the issue for the following packages differ from the latest versions on npm:
Can you verify that the issue still exists after upgrading to the latest versions of these packages? |
Upgraded to |
This previous issue was closed due to no repro steps. It is the same bug. |
This issue is actually in diff --git a/node_modules/react-native-pager-view/.DS_Store b/node_modules/react-native-pager-view/.DS_Store
new file mode 100644
index 0000000..7083c2c
Binary files /dev/null and b/node_modules/react-native-pager-view/.DS_Store differ
diff --git a/node_modules/react-native-pager-view/ios/.DS_Store b/node_modules/react-native-pager-view/ios/.DS_Store
new file mode 100644
index 0000000..40daf43
Binary files /dev/null and b/node_modules/react-native-pager-view/ios/.DS_Store differ
diff --git a/node_modules/react-native-pager-view/ios/ReactNativePageView.m b/node_modules/react-native-pager-view/ios/ReactNativePageView.m
index 9f8ed5b..8ddad58 100644
--- a/node_modules/react-native-pager-view/ios/ReactNativePageView.m
+++ b/node_modules/react-native-pager-view/ios/ReactNativePageView.m
@@ -476,6 +476,16 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat contentOffset =[self isHorizontal] ? scrollView.contentOffset.x : scrollView.contentOffset.y;
CGFloat topBound = [self isHorizontal] ? scrollView.bounds.size.width : scrollView.bounds.size.height;
+ // If a drag goes outside of the content container it should end the drag
+ CGFloat lastContentOffset = [self isHorizontal] ? self.lastContentOffset.x : self.lastContentOffset.y;
+ if (contentOffset <= 0 && lastContentOffset != 0) {
+ scrollView.scrollEnabled = NO;
+ scrollView.scrollEnabled = YES;
+
+ [self goTo:position animated:YES];
+ return;
+ }
+
if ((isFirstPage && contentOffset <= topBound) || (isLastPage && contentOffset >= topBound)) {
CGPoint croppedOffset = [self isHorizontal] ? CGPointMake(topBound, 0) : CGPointMake(0, topBound);
scrollView.contentOffset = croppedOffset; |
Hey! Thanks for opening the issue. Seems that this issue is in |
Current behavior
I have a
TabView
alongside a sidebar. When a swipe is started on the view and is released at edge of the sidebar, the tab index doesn't change (onIndexChange()
isn't called) but the tab still changes. This leaves the tabs in an incorrect state and some of the tabs can't be switched to.Screen.Recording.2022-06-23.at.13.48.40.online-video-cutter.com.mp4
Expected behavior
When a full swipe happens then the tab is changed correctly. Perhaps once the swipe leaves the view then it counts it as swiped, rather than waiting until the swipe is released.
Reproduction
I've forked this repo and added the sidebar to the example code. It is run as normal.
https://github.com/aaulthudl/react-native-tab-view
Platform
Environment
The text was updated successfully, but these errors were encountered: