我有一个UIScrollView
和另一个UIScrollView
,两者都垂直滚动。我遇到了一个问题,当我尝试滚动内部滚动视图时,触摸也会在之后被外部滚动视图拾取。我需要内部滚动视图中的触摸由它专门处理,并且scrollViewDidScroll
不能在父滚动视图上调用。
我尝试了各种方法,将滚动视图子类化并覆盖hitTest:withEvent
、设置canCancelContentTouches
、设置exclusiveTouch
,但都不起作用。scrollViewDidScroll
方法首先在内部方法上激发,然后在外部方法上激发。
如何在第一个滚动视图后有效地消除触摸,而不将其从响应器链传递到外部滚动视图?
(仅供参考:层次结构是中间有一个子视图控制器,因此外部滚动视图包含一个子视图控件,而子视图控制器又包含内部滚动视图)。
苹果绝对不会阻止UIScrollView内部的UIScrollView。它实际上在文档中:
您的应用程序不需要做任何事情来支持嵌套滚动。默认情况下支持并提供它。
https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/UIScrollView_pg/NestedScrollViews/NestedScrollViews.html
如果您想禁止父滚动视图滚动,您可以从子滚动视图发送通知,并在父滚动视图中设置isScrollEnabled
。