如何使一个UIView上的UIGestureRecognizer能够接收到触摸事件,同时确保另一个底层/覆盖的UIView也接收到相同的触摸事件?
假设我有以下视图层次结构:
视图A(蓝色)和B(红色)都是同一父视图(灰色)的子视图。换句话说,它们都是兄弟姐妹,它们的顺序决定了哪个覆盖另一个。
选项1:视图B(红色)具有常规UIButton作为其子视图。选项2:视图A(蓝色)具有常规UIButton作为其子视图。
出于说明的目的,给出选项1:
视图A(蓝色)附加了UITapGestureRecognizer(或者甚至更多其他UIGestureRecognizer)。最优雅的方法是什么,以确保UIButton在其区域内接收所有触摸,但视图A(蓝色)也接收其UITapGestureRecognizer上的这些触摸?
如果可能的话,解决方案不应涉及扩展
到目前为止,我提供了两个选项,因为我不在乎哪个视图(A或B)首先出现,只要两者都能接收到触摸即可。
迄今为止,我的所有方法都突然陷入僵局。也许自定义响应者链会是一个不错的解决方案?我一直在考虑整个
如果可能的话,解决方案不应涉及扩展
UIButton
类并手动转发来自按钮本身的任何事件。想象一下视图B将包含更多控件,而不仅仅是一个按钮。所有这些控件都应该以某种方式允许视图A接收其 UIGestureRecognizer
上的触摸。到目前为止,我提供了两个选项,因为我不在乎哪个视图(A或B)首先出现,只要两者都能接收到触摸即可。
迄今为止,我的所有方法都突然陷入僵局。也许自定义响应者链会是一个不错的解决方案?我一直在考虑整个
UIKit
/ UIEvent
/ UIResponder
堆栈中是否存在优雅的解决方案。