37

您将如何允许 aUIGestureRecognizer接收UIView触摸事件,同时确保另一个底层/覆盖UIView也接收相同的触摸事件?

可以说我有以下视图层次结构: 查看层级涂鸦

视图 A(蓝色)和 B(红色)都是同一个父视图(灰色)的子视图。换句话说,他们都是兄弟姐妹,并且顺序决定他们中的哪一个覆盖另一个。

选项 1:视图 B(红色)有一个常规UIButton作为其子视图。选项 2:视图 A(蓝色)有一个常规UIButton作为其子视图。

为了便于解释,给定选项 1:视图 A(蓝色UITapGestureRecognizer)附加了一个(或者甚至更多,其他 UIGestureRecognizers)。什么是最优雅的方法来确保UIButton确实接收到其区域的所有触摸,但视图 A(蓝色)也接收到它的触摸UITapGestureRecognizer

如果可能的话,解决方案不应涉及扩展UIButton-class 和手动转发按钮本身的任何事件。想象一下视图 B 将包含更多控件而不仅仅是一个按钮。所有这些控件都应该以某种方式允许视图 A 接收对其UIGestureRecognizer.

我确实提供了两个选项,因为我不在乎这些视图(A 或 B)中的哪一个先出现,只要两者都收到触摸。

到目前为止,我所有的方法都突然走到了死胡同。也许自定义响应者链会是一个不错的解决方案?UIKit我一直在想,整个//堆栈中必须有一个优雅的解决方案UIEventUIResponder

4

1 回答 1

20

你试过这个吗?

cancelsTouchesInView 一个布尔值,影响在识别手势时是否将触摸传递到视图。

@property(nonatomic) BOOL cancelsTouchesInView
于 2011-05-30T10:51:24.547 回答