我在UIScrollview内有一个(垂直)UiSlider.我希望能够更改滑块的值,而不用抬起手指,滚动向左或向右滚动.
所需行为:
在垂直UiSlider内触摸,然后左手或右键拖动滚动浏览
实际行为:
在垂直UiSlider内向下触摸,其次是左右的手指拖动在UIScrollview中不会移动. UiSlider之外的一个触摸后跟拖动将按预期滚动滚动视图
UIView有一个名为exclusiveTouch的属性,好像它可能与我的问题有关.我试着把它设置为NO,没有运气.
解决方法
你试过子类化UIScrollView并实现 – (BOOL)touchesShouldCancelInContentView:(UIView *)视图?根据苹果文档:
// called before scrolling begins if touches have already been delivered to a subview of the scroll view. if it returns NO the touches will continue to be delivered to the subview and scrolling will not occur // not called if canCancelContentTouches is NO. default returns YES if view isn't a UIControl
假如你的UIScrollView只能水平滚动,如果你的视图是你的UiSlider,那么你可以简单地返回NO.如果这不起作用,您可能需要为UIScrollView和您的UiSlider进行自定义触摸处理(即覆盖触摸屏,包括事件:与…触摸:withEvent:等).