在UIScrollView中滚动UITableView

问题描述:

我有一个UITableView这是UIView的子视图,那么UIViewUIScrollView的子视图。如何检测应该滚动UITableView的触摸?在UIScrollView中滚动UITableView

UITableView可以得到项目选择事件(表格中的一个单元格被选中/点击)就好了,除了在单元格被触发前不得不按住单元格。但我无法滚动UITableView,它总是对平移手势做出反应的UIScrollView

任何帮助,非常感谢。提前致谢!

编辑: 解决了,虽然我问了错误的问题。它在罗马K指出的默认情况下工作。我认为问题与的一部分在UIScrollView的范围之外有关(UITableView超过UIScrollView的底部范围)。将其设置为正确安装在UIScrollView内部。

+0

我想建议这个答案 http://stackoverflow.com/questions/3422915/scrolling-a-uitableview-inside-a-uiscrollview/32486714#32486714 – 2015-09-09 18:27:33

请确保UIScrollView's属性delaysContentTouchescanCancelContentTouches设置得当。它们控制UIScrollView实例如何将触摸信息传递给子视图。默认delaysContentTouches设置为YES。此外,请确保,如果您扩展UIScrollView,则允许在子视图中触摸touchesShouldBegin:withEvent:inContentView:

否则,UITableView滚动应该在您的方案中默认工作。如果您使用所描述的视图层次结构创建测试项目,您将看到它是这种情况。所以,比较两者,看看有什么区别影响滚动。

+1

我相信我设置delaysContentTouches(设置为YES)和canCancelContentTouches(设置为NO)就好了。我能够在UITableView中轻松点击,但不能轻扫和平移。 – Altealice 2010-08-07 08:18:48

+0

谢谢。这已经很痛苦了。 – thedp 2013-10-25 14:31:43

+3

我认为这个逻辑在iOS8中被破坏了。看起来UIScrollView会拦截垂直滚动手势,而不会忽略它们。我发布了一个关于它的新问题 - http://stackoverflow.com/questions/25558630/uiscrollview-behavior-is-different-in-ios8 – sha 2014-08-28 22:15:01