2011-07-11 27 views
2

可能重复的子视图:
UISlider and UIScrollViewUISlider作为UIScrollView的

使用的是iOS SDK 4.3。当我尝试拖动滑块结束滚动时,我发现当我有一个UISlider作为UIScrollView的子视图时,这当然是水平滚动的。

这将是一个糟糕的用户体验。任何人都知道如何实现这个以避免这个问题。

感谢

回答

1

你可以看在UISlider触摸事件,并在触及事件,你可以设置scrollEnabled为NO的UIScrollView中,然后在触摸的内心&之外的事件,它设置为YES再次。看看是否为您解决了这个问题,还是在UISlider收到任何触摸事件之前滚动UIScrollView?

编辑:正如诺亚指出的,这是行不通的。你可以做的是UIScrollView的子类,并覆盖touchesBegan,touchesMoved和touchesEnded方法。在那里,您可以检查触摸是否与包含UISlider的区域相对应,如果是,则手动将触摸传递给滑块。我正在为一个我正在做的项目做了这个工作,它在滚动视图中有一个拨号(我自己制作的自定义控件)。我需要能够在没有滚动的情况下转动拨号盘。当我检测到在触摸屏内部触摸到触碰开始时,我将禁用滚动视图上的滚动,然后在touchesMoved中将其传递给拨号。你也可以看看hitTest:withEvent:方法来拦截那里的一些触摸。

+1

滚动视图处理触摸转发到其子视图的方式意味着滑块甚至不会在滚动视图丢弃滚动视图之前获取触摸屏事件。这不起作用。 –