【问题标题】:Scrolling a UITableView inside a UIScrollView在 UIScrollView 内滚动 UITableView
【发布时间】:2011-03-26 06:34:34
【问题描述】:

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

UITableView 可以很好地获取项目选择事件(表格中的一个单元格被选中/点击),除了你必须在它触发之前按住单元格。但我无法让UITableView 滚动,它总是对平移手势作出反应的UIScrollView

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

编辑: 解决了,虽然我问错了问题。正如 Roman K 指出的那样,它默认情况下确实有效。我认为问题与UITableView 的一部分超出UIScrollView 的范围有关(UITableView 超出了UIScrollView 的下限)。将其设置为正确适合 UIScrollView 已修复它。

【问题讨论】:

标签: objective-c cocoa-touch uitableview ipad uiscrollview


【解决方案1】:

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

否则,UITableView 滚动应该在您的场景中默认工作。如果您创建一个仅具有所描述的视图层次结构的测试项目,您将看到情况确实如此。所以,比较两者,看看有什么不同会影响滚动。

【讨论】:

  • 我相信我设置了 delaysContentTouches(设置为 YES)和 canCancelContentTouches(设置为 NO)就好了。我可以很好地在 UITableView 中点击,但不能滑动和平移。
  • 谢谢。痛了这么久。
  • 我认为这个逻辑在 iOS8 中被打破了。看起来 UIScrollView 会拦截垂直滚动手势而不是忽略它们。我发布了一个关于它的新问题 - stackoverflow.com/questions/25558630/…
  • @sha +1 我们也有同样的问题!
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 2019-11-07
  • 2019-11-11
  • 2010-11-01
  • 2018-01-31
  • 1970-01-01
  • 2020-11-05
  • 2013-05-31
相关资源
最近更新 更多