TLDR: How to remove the swipe/pan gesture recognizer for UISegmentedControl on iOS 13?
Hi, on iOS 13, lots changed with UISegmentedControl. Mostly, the changes were appearance-based. But there is another functionality change that is messing up my app.
On iOS 13, with UISegmentedControls, you can now swipe/pan to change the selected segment in addition to touching the segment you would like to select.
In my app, I basically have a UISegmentedControl embedded in a scrollview. The UISegmentedControl is too long for the screen to display all of the values, so I created a scrollview that is the width of the screen, whose content width is the length of the UISegmentedControl, and to access the non-visible segments, the user swipes the "scrollview" and the segmented control slides.
This worked perfectly up until iOS 13, and now, the user can't scroll the horizontal background scrollview while dragging on the segmented control because I am assuming the scrollview scroll recognizer is overridden by the new scrollview swipe to select gesture.
I have tried even removing ALL gesture recognizers for the UISegmentedControl and all of its subviews recursively, and the swipe to change selection gesture still works... I am stuck.
Thanks, let me know if the problem is unclear
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…