[Bug] Expander doesn't work properly inside Shell Flyout on iOS #570
Description
Hi @AndreiMisiukevich thanks for your work creating the expander control, which is a great addition to xamarin forms that I've been hoping for for a long time. I've found an iOS bug which I've detailed below, I wondered if you could take a look or if you know of any workarounds? Funnily enough I coded a bespoke expander just for my project before this was available which always suffered from this but, and in the process of replacing mine with your new control I found that it suffered from the same behaviour on iOS - so it's possible our implementations were similar - I could never work out why it was happening - I hope you can! Thanks!
Description
When using the new experimental Expander as the content for a shell item template in a Shell Flyout item on iOS, the expansion doesn't push down the other Flyout content items as expected. Instead it overlays the other content, and clicks go straight through to the content below it. Android works as expected, the other content moves down out of the way, clicks in the expanded zone are captured as expected, and clicking the expander header again hides the items and the other content moves back up.
Steps to Reproduce
- Launch the repro project I have provided in iOS
- Open the flyout menu
- Click on the "Click me to expand" link at the top of the screen
- You will see the revealed content overlaying the other flyout items, the other items don't move down out of the way.
- Try to click on one of the revealed buttons. None of the buttons are clickable (except the first one with some effort). Most of the time the clicks fall through to the underlying flyout items.
Expected Behavior
The other flyout content should move down out of the way to reveal the expandable content, and move back up when the content is hidden by clicking on the expandable header again. The expandable content items should be clickable if they are supposed to be e.g buttons. Here is a short gif of the app running on my physical android device (samsung galaxy a4 android 9.0), showing it displaying the correct behaviour.
Actual Behavior
On iOS the expanded content comes over the top of the other items and clicks sink through to the other flyout items below it. Here is a short gif of the app running on my iPhone XS (13.3.1) showing the unexpected wrong behaviour.
If the orientation is changed to landscape and back to portrait while the expander is open, the other items are redrawn in the correct place. However closing the expander does not redraw them, unless the orientation changes are repeated once closed.
Basic Information
- Version with issue: 4.6
- Last known good version: None - expander is brand new
- IDE: Visual Studio 16.5.4
- Platform Target Frameworks:
- iOS:
- Android: 9.0 (working)
- Android Support Library Version: N/a
- Nuget Packages: Xamarin Forms only
- Affected Devices: All iOS devices
Screenshots
See gifs above
Reproduction Link
Here's a zipped reproduction solution with Android and iOS projects. I've removed all bin and obj folders, so make sure to rebuild.
Workaround
None found - even if I include my expander at the bottom of the flyout to avoid the "other content not getting out of the way" issue, the revealed buttons are still not clickable. For now on iOS I will need to have a different menu system.