我有一个简单的设置:有 2 个兄弟 UIViews
A 和 B,B 完全覆盖 A(但它是透明的,所以 A 是可见的):
┌──────────────────┐
│ View A │
│ │
│ ┌──────────────┴───┐
│ │ View B │
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │
└───┤ │
│ │
│ │
└──────────────────┘
我需要 2 个不同的 UIGestureRecognizers
:A 应该有一个点击识别器,B 应该有一个平移识别器。每当我点击 B 时,它应该将触摸事件传递给后面的 View A,以便它可以识别点击(我将使用一些逻辑来了解平移是否被接受,例如距离、开始区域等)。这可以在 iOS 中实现吗?
到目前为止,我的经验是,一旦 B 接受了触摸,它就永远不会将其转发给落后的 A。接受或不接受的决定应该在覆盖的 pointInside
或 hitTest
函数中立即完成。但是,在我的案例中,决定是基于某种逻辑并取决于用户交互的上下文和历史。
最佳答案
根据 Responder Chain
它会将事件转发到下一个 View (或下一个级别),如果它没有被顶级对象处理,但如果它被顶级对象处理那么它不会'不要将其传递到下一个级别。因此,在您的情况下,如果 View B 正在响应触摸事件,它不会将触摸传递给 View A,但是如果您强行阻止 View B 中的触摸事件,则 Responder Chain
会传递触摸事件查看 A.
更多内容在链接中:enter link description here
希望对你有帮助
关于iOS:将手势传递给下面的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541763/