iOS:将手势传递给下面的 View

标签 ios objective-c uiview uigesturerecognizer

我有一个简单的设置:有 2 个兄弟 UIViews A 和 B,B 完全覆盖 A(但它是透明的,所以 A 是可见的):

┌──────────────────┐
│   View A         │
│                  │
│   ┌──────────────┴───┐
│   │   View B         │
│   │                  │
│   │                  │
│   │                  │
│   │                  │
│   │                  │
└───┤                  │
    │                  │
    │                  │
    └──────────────────┘

我需要 2 个不同的 UIGestureRecognizers:A 应该有一个点击识别器,B 应该有一个平移识别器。每当我点击 B 时,它应该将触摸事件传递给后面的 View A,以便它可以识别点击(我将使用一些逻辑来了解平移是否被接受,例如距离、开始区域等)。这可以在 iOS 中实现吗?

到目前为止,我的经验是,一旦 B 接受了触摸,它就永远不会将其转发给落后的 A。接受或不接受的决定应该在覆盖的 pointInsidehitTest 函数中立即完成。但是,在我的案例中,决定是基于某种逻辑并取决于用户交互的上下文和历史。

最佳答案

根据 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/

相关文章:

ios - LoadView 永远不会在 UIViewController 上调用

ios - 在 Apple 状态栏上显示 UIView

android - iOS 和 Android 应用程序的 cors header 白名单

ios - UITextField 点击检测

objective-c - animateWithDuration 不起作用

ios - 如何在 objective c 中使用 swift 文件

ios - UIScrollView 中同一个 UIView 的多个实例

iphone - iOS旋转设备无旋转动画

ios - 如何将 View Controller 添加到 ScrollView ,但仅在 ScrollView 显示该 vc 时实例化 View Controller ?

objective-c - 从网站检索数据到 iPhone