handsomecode / InteractiveSideMenu

iOS Interactive Side Menu written in Swift.
Apache License 2.0
708 stars 164 forks source link

Using Screen Edge Pan to open menu can cause app to stop responding to touches #86

Open lukeharries opened 6 years ago

lukeharries commented 6 years ago

Replication steps: (Swift 4, iOS 11.3 SDK, iOS11 Sim & Device) Use screen edge pan gesture to slowly open menu, drag finger to other side of screen, and then off screen.

Observed Behaviour: Menu Open transition is cancelled (content snaps back to full screen) and the UI becomes unresponsive.

Expected Behaviour:

Suspected Issues: In MenuAnimator.handlePan(recognizer: ) the boolean condition progress > 0.4, velocity >= 0 || progress > 0.01, velocity > 100 does not appear to evaluate correctly. This may be a Swift 4 issue.

Also in MenuAnimator.handlePan(recognizer: ) there are some situations when Recognizer.state is cancelled or ended, and the program does not enter any conditional blocks where finishTransition or cancelTransition is called, so isUserInteractionEnabled is never set to true.

AshleyDeng commented 6 years ago

I have exactly the same issue. For me, it happens when I try to navigate between A -> (B) -> C view controllers. B is an optional VC that might be bypassed and when it happens, C unwind to A where Screen Edge Pan on A will fail to open menu and causes UI to become unresponsive.

Also, following this to disable swipe to show menu gesture failed to work due to the recent updates.