在我的iOS应用程序中有一个UITableView,其中包含一个自定义子视图。此单元格是一个交互式视图,用于处理触摸事件(touchesBegan,touchesEnded,touchesMoved)以更新自身。
问题在于,当用户'向上或向下拖动'时,tableView会捕获这些触摸(虽然我没有通过响应链上的触摸),滚动表并阻止子视图正常工作。我想阻止表滚动,只要用户触摸该特定子视图。
子视图根本没有对tableView的引用。
如何阻止表格的滚动行为?
更新
尽管接受了下面的答案,我最终还是以不同的方式处理了我的情况。我现在在自定义视图中处理触摸事件,将它们传递给响应者链(到表格单元格),单元格也处理触摸事件,使用它们启用/禁用超级视图(表格)上的滚动。
答案 0 :(得分:8)
关闭UITableView中的“可取消内容触摸”解决了这个问题(在Scroll View / Touch下的UITableView属性检查器中)。我从这个问题得到了这个问题:Scrolling a UITableView inside a UIScrollView
来自UIScrollView:canCancelContentTouches doc:
如果此属性的值为NO,则滚动视图不会滚动 一旦内容视图开始跟踪,无论手指移动如何。
答案 1 :(得分:0)
我在这种情况下使用的最常用方法是将信息委托给事件链。以方式设置代表:
subview->cell->table
您可以做的第二件事是通过Notificaion Center发送通知。表将侦听任何禁止正常滚动的事件。它超调但会使代码保持一致。
目前我没有更多的想法。