mkko / DrawerView

A drop-in view, to be used as a drawer anywhere in your app
MIT License
374 stars 57 forks source link

iOS 13 - Impossible to scroll up and down #14

Closed andrealufino closed 4 years ago

andrealufino commented 4 years ago

Hello! There's this annoying bug that prevent to scroll the drawer up and down, unless you put the finger on the table view inside it. This happens only on iOS 13. I think it's pretty urgent. Do you think you're able to release a fix soon?

Thanks.

cjwillis809 commented 4 years ago

From testing on the gold master of Xcode 11, it looks like the handlePan function for the UIPanGestureRecognizer is only recognizing .began and .ended states when you swipe from the top of the drawer view. When you swipe from the contents of the drawer view, the .changed state is fired off and moves accordingly.

Perhaps something changed with UIPanGestureRecognizer in iOS 13? @mkko

mkko commented 4 years ago

Sounds severe. I'll get back to you on this.

andrealufino commented 4 years ago

@cjwillis809 Exactly, I debugged a bit and I found exactly the same. I did not find anything on the internet about the UIPanGestureRecognizer changes in iOS 13. Did someone has some url where this topic is discussed?

@mkko thanks man 👍🏻

mkko commented 4 years ago

Not yet sure if its related, but changing gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) to return false by default restores the scroll functionality. I'm not sure but I think I'm seeing several new gesture recognizers there.

Unfortunately I can't remember the reason for returning true in the first place.

andrealufino commented 4 years ago

So you think that returning false from there is the way to solve the issue? Only on iOS 13 or for all the versions?

mkko commented 4 years ago

If I recall, the whole purpose of setting up a failure requirement was to prevent some cases where another gesture recognizer needs to act first. However, I think it can be worked so that whoever needs this will set their own requirements.

Always returning false from the delegate call pretty much makes it obsolete, so I removed it.

I created a PR for this: https://github.com/mkko/DrawerView/pull/15. I'd highly appreciate if you have the time to check it.