handsomecode / InteractiveSideMenu

iOS Interactive Side Menu written in Swift.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

lukeharries opened this issue · comments

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:

  • Menu opens
  • UI Never becomes unresponsive after a menu transition, under any condition.

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.

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.