使用后将触摸事件从覆盖 UIView 转发到下面的 UIScrollView

Lar*_*sen 6 touch uiscrollview ios swift

我有一个关于 iOS / Swift 中触摸处理的问题:

\n\n

我的项目看起来像这样

\n\n
UIViewController\n     \xe2\x86\x92 UIView\n          \xe2\x86\x92 OverlayView (UIView)\n          \xe2\x86\x92 ScrollView (UIScrollView)\n
Run Code Online (Sandbox Code Playgroud)\n\n

OverlayView 位于 UIScrollView 之上。两者都是 UIViewControllers 视图的子视图。

\n\n

我这样做的原因是,我希望滚动视图正常运行(平移、缩放),而覆盖视图不受滚动视图可见内容变化的影响。此外,覆盖视图应该处理触摸事件,以显示下面滚动视图中内容的指南。

\n\n

我现在面临的问题是,触摸事件(touchesBegan, touchesMoved, touchesEnded,touchesCancelled)不会继续到滚动视图(滚动视图不会平移/缩放)。

\n\n

我找到了一种通过覆盖point(inside point: CGPoint, with event: UIEvent?) -> Bool并返回将触摸事件转发到下面的下一个视图的解决方案false将触摸事件转发到下面的下一个视图的解决方案。但是覆盖视图上的触摸事件将不会被调用。

\n\n

有谁知道如何实现这种行为?我尝试在覆盖视图中调用下一个响应者上的所有触摸事件,但这也不起作用。

\n\n

感谢您的帮助建议!

\n

soo*_*per 0

你最好的选择是查找hitTest文档) - 在你的子类(覆盖)中创建逻辑,决定何时将触摸事件传递到下面的视图