我有一个视图层次结构,布局如下:
父视图
scrollView
contentViewA
containerView
contentViewB
contentViewC
我希望 contentViewB 响应触摸。不幸的是,scrollView 使这几乎不可能,因为它试图摄取触摸本身,从而使 contentViewB 的触摸响应参差不齐。
所以,相反,我想拦截 parentView 中的所有触摸,直接操作 contentViewB,然后将触摸传递给 scrollView 以便它可以做它的事情。
有人可以告诉我正确的方法来完成这个吗?
提前致谢。
干杯,道格
更新:
我做了更多的挖掘,发现属性 canCancelContentTouches 似乎可以创造奇迹。我正在使用 IB,所以我在 IB 中取消选中“可取消的内容触摸” - 滚动视图属性检查器的第一个选项卡。现在,当我运行应用程序时,触摸似乎可靠地到达 contentViewB。
以下是 UIScrollView 文档描述此属性的方式:
讨论 如果此属性的值为 YES 并且内容中的视图已经开始跟踪触摸它的手指,并且如果用户拖动手指足以启动滚动,则视图接收到 touchesCancelled:withEvent: 消息并且滚动视图句柄作为滚动的触摸。如果此属性的值为 NO,则一旦内容视图开始跟踪,无论手指移动如何,滚动视图都不会滚动。
比较不透明吧?无论如何,它似乎工作。