UIScrollView内部的UIScrollView-在文本视图的边界内忽略滚动视图触摸



我有一个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

最新更新