Baseflow / Xamarin-Sidebar

A slideout navigation control for Xamarin.iOS
https://baseflow.com
Apache License 2.0
113 stars 67 forks source link

Make sidebar pan gesture customizable #82

Open ElteHupkes opened 6 years ago

ElteHupkes commented 6 years ago

The pan gesture used to open the sidebar overrides most other gestures in the content view that it targets, and doesn't mark itself as "failed" when it decides to ignore a certain gesture. This makes it very hard to use other gestures in this view. When implementing a custom gesture some success can be achieved by being creative with ShouldBeRequiredToFailBy... and the likes, but when you do not have control over the other gesture recognizer (my concrete example: a swipe left to start UITableViewCell editing mode) you're basically left without options.

The solution would be to

  1. Make the pan gesture fail appropriately (can be as simple as returning false from SlideoutPanDelegate.ShouldReceiveTouch() when the touch is not inside the gesture active area) and / or
  2. Allow access to the gesture recognizer so a custom delegate can be used. Sidebar.PanGesture is public, but because the actual _sidebar is a private property of the SidebarController it can currently only be accessed with reflection (which is what I'm doing to work around the problem right now).

I'd be willing to submit a PR for one or both of these changes if this sounds reasonable to you.

jdehlin commented 6 years ago

I've had a bunch of people submit issues related to this and never knew how to fix it. If you could submit a PR with those fixes that would be great!

ElteHupkes commented 6 years ago

Okay, see #83 . Let me know if I missed anything!

martijn00 commented 6 years ago

Fixed in: https://github.com/jdehlin/Xamarin-Sidebar/pull/84