Touch on UISlider prevents scrolling of UIScrollView

前端 未结 5 1577
日久生厌
日久生厌 2021-02-20 10:28

I have a (vertical) UISlider inside a UIScrollview. I\'d like to be able to change the value of the slider, and, without lifting my finger, scroll the scrollview left or right.

5条回答
  •  感情败类
    2021-02-20 11:06

    What you are seeing is the intended behavior.

    Each touch event only gets handled by one control. What exclusiveTouch does is actually to prevent other touch events from being delivered to other views.

    To do what are trying to do you would have to do some of the touch handling yourself. Passing the event to both your views. You could do either do it by implementing all the touchesBegan:, touchesMoved: etc. methods and pass the events to both views. You can read more about that approach in the UIResponder documentation. Another approach is to do the event handling in a UIGestureRecognizer on the scroll view that hit tests the slider and updates the value of the slider using the y-delta. You can read more about gesture recognizers and event handling in the section about Gesture Recognizers in the Event Handling Guide for iOS.


    Side note:

    Go to the Settings app and toggle a switch half way (for example the Airplane mode toggle) and then drag down. Nothing will happen. The rest of the OS behaves the same way. Are you sure that this is the interaction that you really want to do? Apps that behave differently often feel weird and unfamiliar.

提交回复
热议问题