UIGestureRecognizer接收触摸,但也转发给UIControl
你会如何让一个UIView
的UIGestureRecognizer
接收一个触摸事件,但也要确保另一个底层/覆盖UIView
也接收到这个非常相同的触摸事件?
可以说我有以下的看法 – hierachie:
视图A(蓝色)和B(红色)都是同一个超级视图(灰色)的子视图。 换句话说,他们都是兄弟姐妹,顺序决定哪一个涵盖另一个。
选项1:视图B(红色)有一个常规的UIButton
作为其子视图。 选项2:视图A(蓝色)有一个常规的UIButton
作为子视图。
鉴于解释的select1:视图A(蓝色)有一个UITapGestureRecognizer
(或甚至更多,其他UIGestureRecognizers)附加。 什么是最优雅的方法来确保UIButton
确实能够接触到它的所有区域,而且A(蓝色)视图接受了UITapGestureRecognizer
触摸?
如果可能的话,解决scheme不应该涉及扩展UIButton
类,并手动转发button本身的任何事件。 想象一下,视图B将包含更多的控件,而不仅仅是一个button。 所有这些控件应该以某种方式允许视图A在其UIGestureRecognizer
上接收触摸。
我确实提供了两个选项,因为我不关心那些视图(A或B)中的哪一个先到达,只要两者都接收到触摸即可。
到目前为止,我所有的做法都突然传到了死胡同里。 也许一个自定义响应者链将是一个很好的解决scheme? 我一直认为在整个UIKit
/ UIEvent
/ UIResponder
堆栈中必须有一个优雅的解决scheme。
你有尝试过吗?
cancelsTouchesInView一个布尔值,影响识别手势时是否将触摸传递到视图。
@property(nonatomic) BOOL cancelsTouchesInView