Просмотр исходного кода

Fix priorities of swipe / pan gestures in explorer

Tanner Bennett лет назад: 6
Родитель
Сommit
84cdc6a8e4

+ 3 - 2
Classes/Core/Controllers/FLEXTableViewController.m

@@ -30,6 +30,7 @@ CGFloat const kFLEXDebounceForExpensiveIO = 0.5;
 @property (nonatomic) BOOL didInitiallyRevealSearchBar;
 @property (nonatomic) UITableViewStyle style;
 
+@property (nonatomic) BOOL hasAppeared;
 @property (nonatomic, readonly) UIView *tableHeaderViewContainer;
 @end
 
@@ -263,8 +264,8 @@ CGFloat const kFLEXDebounceForExpensiveIO = 0.5;
     self.didInitiallyRevealSearchBar = YES;
 }
 
-- (void)willMoveToParentViewController:(UIViewController *)parent {
-    [super willMoveToParentViewController:parent];
+- (void)didMoveToParentViewController:(UIViewController *)parent {
+    [super didMoveToParentViewController:parent];
     // Reset this since we are re-appearing under a new
     // parent view controller and need to show it again
     self.didInitiallyRevealSearchBar = NO;

+ 10 - 1
Classes/ObjectExplorers/FLEXObjectExplorerViewController.m

@@ -206,7 +206,16 @@
 }
 
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)g1 shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)g2 {
-    return [g2 isKindOfClass:[UIPanGestureRecognizer class]] &&g2 != self.navigationController.interactivePopGestureRecognizer;
+    // Prioritize important pan gestures over our swipe gesture
+    if ([g2 isKindOfClass:[UIPanGestureRecognizer class]]) {
+        if (g2 == self.navigationController.interactivePopGestureRecognizer ||
+            g2 == self.navigationController.barHideOnSwipeGestureRecognizer ||
+            g2 == self.tableView.panGestureRecognizer) {
+            return NO;
+        }
+    }
+    
+    return YES;
 }
 
 - (BOOL)gestureRecognizerShouldBegin:(UISwipeGestureRecognizer *)gesture {