29

如果 UIButton 在 UIScrollView (或表格视图)内,我注意到它在触摸时的突出显示状态略有延迟。否则,突出显示的状态几乎是瞬时的。

我想这必须是设计使然,以便为用户提供滚动的机会。但似乎按钮对我没有反应。有没有办法来解决这个问题?

4

1 回答 1

63

确实,这是一种设计选择。它需要这么短的时间来区分滚动(panGesture)和点击。如果你消除了这种延迟,那么如果用户将手指放在按钮上,用户将无法滚动,这不是很好的用户体验。

因为滚动视图没有滚动条,所以它必须知道触摸是表示滚动意图还是跟踪内容中的子视图的意图。为了做出这个决定,它通过启动一个定时器来临时拦截一个触摸事件,并在定时器触发之前,查看触摸的手指是否有任何移动。如果计时器在位置没有显着变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。

来自UIScrollView 文档

我不建议禁用延迟,但如果您坚持,您可以在界面生成器中设置它(选择滚动视图,然后在右侧面板上的“反弹缩放”下方),或使用以下代码:

scrollView.delaysContentTouches = false
于 2011-09-24T20:00:39.877 回答