UIScrollView中的UIPicker - 忽略拖动/移动但捕捉触摸

时间:2013-09-05 18:52:42

标签: ios cocoa-touch uiscrollview uicontrol

我有一个相当大的(在屏幕区域中)UIControl,我将其放入UIScrollView。作为一个UIControl,它劫持了所有触摸,任何从控件内部开始的拖动都不会被UIScrollView反映出来。

这个控件只需要UIControlEventTouchUpInside,那么有没有办法“只”监听那个事件?

我的第一直觉是覆盖hitTest:withEvent:并且如果检测到拖动则返回superview,但是它不提供有关控件事件的类型的任何信息。

我的最后一招是让它成为一个通用的UIView,但如果可能的话,我宁愿不去那条路。

修改

抱歉,为清楚起见,我故意将delayedContentTouches设置为NO以支持我正在处理的屏幕上的其他功能。无意的副作用导致了Joel H的第二点。

1 个答案:

答案 0 :(得分:0)

尝试将UIScrollView的canCancelContentTouchesdelaysContentTouches属性设置为YES。

当UIScrollView属性canCancelContentTouches设置为YES时,它应该将任何滚动/拖动触摸传输到滚动视图,并取消在子视图中注册的任何触摸。

滚动视图的delaysContentTouches也应设置为YES。这样可以防止拖动作为点击触发(因为处理程序很快就会触发)。

UIScrollView class reference