jemise111 / react-native-swipe-list-view

A React Native ListView component with rows that swipe open and closed
https://www.npmjs.com/package/react-native-swipe-list-view
MIT License
2.78k stars 528 forks source link

Swipe actions are stuck when you add a gesture recognizer to container view of SwipeListView #596

Open cnytayvaz opened 2 years ago

cnytayvaz commented 2 years ago

Describe the bug: I want to listen swipe gestures for logging purposes on the screen where I'm using the SwipeListView, so I added an UISwipeGestureRecognizer to the SwipeListView's container view. After that I saw that SwipeListView's actions are stuck.

To Reproduce: You can reproduce the issue by adding any gesture recognizer to the window or the rootView in the appDelegate class of the example project, detailed below.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"SwipeListExample"
                                            initialProperties:nil];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  UISwipeGestureRecognizer *leftSwipeGesture = [[UISwipeGestureRecognizer alloc]
                                                initWithTarget:self
                                                action:@selector(handleSwipe:)];
  leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
  leftSwipeGesture.cancelsTouchesInView = NO;
  [self.window addGestureRecognizer:leftSwipeGesture];

  UISwipeGestureRecognizer *rightSwipeGesture = [[UISwipeGestureRecognizer alloc]
                                                 initWithTarget:self
                                                 action:@selector(handleSwipe:)];
  rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
  rightSwipeGesture.cancelsTouchesInView = NO;
  [self.window addGestureRecognizer:rightSwipeGesture];

  return YES;
}

- (void) handleSwipe: (UISwipeGestureRecognizer *)recognizer
{
    //Code to handle the gesture
}

Screenshots: issue

Environment:

ireneMel commented 1 year ago

Hi! Were you able to solve this?

shreyn1 commented 11 months ago

Facing the same issue when I am using this inside @react-navigation/material-top-tabs

thbd commented 10 months ago

Facing the same issue when I am using this inside @react-navigation/material-top-tabs

Exact same problem for me. How did you solve your issue ?

shreyn1 commented 10 months ago

One of the solutions I got online was to downgrade the version of react-native-tab-view. But was still causing issues.

Later, I changed the direction of swipe options from right to left.

thbd commented 10 months ago

Thank you for your answer. Unfortunately, both options I cannot do... I don't know what is causing the issue. Even disabling swiping gesture on Tabs does not unstuck the row swipe

shreyn1 commented 10 months ago

Instead of using @react-native/material-top-tabs. You can try to use react-native-pager-view. Maybe that will work fine. I have not tried it.

Anurag-Raut commented 5 months ago

has anyone found solution to this ?