From beea205b21184f2b2dccdcef8fc482a31ebab0fc Mon Sep 17 00:00:00 2001 From: thomasdao Date: Tue, 30 Aug 2022 08:03:12 +0700 Subject: [PATCH 1/2] Do not reveal the side panel if user is scrolling vertically User is usually swipe left or right to reveal the panel and swipe vertically to scroll the content view in the app. It would be more friendly if the side panel is not revealed when user is scrolling vertically. --- .../Extensions/LGSideMenuController+GesturesHandler.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift b/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift index 5791b38..fc7811f 100644 --- a/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift +++ b/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift @@ -110,6 +110,9 @@ extension LGSideMenuController { let location = gesture.location(in: self.view) let velocity = gesture.velocity(in: self.view) + + // If user is scrolling vertically, do not handle the gesture + if abs(velocity.y) > abs(velocity.x) { return } if self.isLeftViewVisibilityStable, gesture.state == .began || gesture.state == .changed { @@ -177,6 +180,9 @@ extension LGSideMenuController { let location = gesture.location(in: self.view) let velocity = gesture.velocity(in: self.view) + + // If user is scrolling vertically, do not handle the gesture + if abs(velocity.y) > abs(velocity.x) { return } if self.isRightViewVisibilityStable, gesture.state == .began || gesture.state == .changed { From e1aac2b9b441a81b69a662a22da75456140becbc Mon Sep 17 00:00:00 2001 From: thomasdao Date: Thu, 1 Sep 2022 11:36:16 +0700 Subject: [PATCH 2/2] Do not reveal side panel - only invoke if the view is not shown yet --- .../LGSideMenuController+GesturesHandler.swift | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift b/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift index fc7811f..fd9f1c7 100644 --- a/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift +++ b/LGSideMenuController/Extensions/LGSideMenuController+GesturesHandler.swift @@ -110,9 +110,6 @@ extension LGSideMenuController { let location = gesture.location(in: self.view) let velocity = gesture.velocity(in: self.view) - - // If user is scrolling vertically, do not handle the gesture - if abs(velocity.y) > abs(velocity.x) { return } if self.isLeftViewVisibilityStable, gesture.state == .began || gesture.state == .changed { @@ -123,7 +120,7 @@ extension LGSideMenuController { if self.isLeftViewShowing { self.hideLeftViewPrepare() } - else { + else if abs(velocity.x) > abs(velocity.y) { self.showLeftViewPrepare(updateStatusBar: true) } } @@ -181,9 +178,6 @@ extension LGSideMenuController { let location = gesture.location(in: self.view) let velocity = gesture.velocity(in: self.view) - // If user is scrolling vertically, do not handle the gesture - if abs(velocity.y) > abs(velocity.x) { return } - if self.isRightViewVisibilityStable, gesture.state == .began || gesture.state == .changed { if self.isRightViewShowing ? velocity.x > 0.0 : velocity.x < 0.0 { @@ -193,7 +187,7 @@ extension LGSideMenuController { if self.isRightViewShowing { self.hideRightViewPrepare() } - else { + else if abs(velocity.x) > abs(velocity.y) { self.showRightViewPrepare(updateStatusBar: true) } }