在我的 iOS 应用程序中有一个 UITableView,其中一个单元格中包含一个自定义 subview 。此单元格是一个交互式 View ,可处理触摸事件(touchesBegan、touchesEnded、touchesMoved)以更新自身。
问题是,当用户向上或向下“拖动”时,tableView 会捕获这些触摸(尽管我没有将触摸传递到响应链),滚动表格并阻止 subview 正常工作。只要用户触摸那个特定的 subview ,我就想阻止表格滚动。
subview 根本没有对 tableView 的引用。
如何防止表格的滚动行为?
更新
尽管接受了下面的答案,但我最终以不同的方式处理我的情况。我现在在我的自定义 View 中处理触摸事件,将它们向上传递到响应链(到表格单元格),该单元格也处理触摸事件,使用它们启用/禁用 super View (表格)上的滚动。
最佳答案
关闭 UITableView 中的“Cancellable Content Touches”为我解决了这个问题(在 ScrollView /触摸下的 UITableView 属性检查器中)。我从这个 SO 问题中得到了这个:Scrolling a UITableView inside a UIScrollView
来自 UIScrollView:canCancelContentTouches 文档:
If the value of this property is NO, the scroll view does not scroll regardless of finger movement once the content view starts tracking.
关于objective-c - 当自定义 subview 处理触摸时防止 UITableView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673083/