开发者

UIGestureRecognizer receive touch but forward it to UIControl as well

开发者 https://www.devze.com 2023-03-09 00:36 出处:网络
How would you allow a UIGestureRecognizer of a UIView to receive a touch event but also make sure that another, underlaying/overlaying UIView also receives that very same touch event?

How would you allow a UIGestureRecognizer of a UIView to receive a touch event but also make sure that another, underlaying/overlaying UIView also receives that very same touch event?

Lets say I have got the following view-hierachie:

UIGestureRecognizer receive touch but forward it to UIControl as well

Views A (blue) and B (red) are both subviews of the same superview (gray). In other words, they are both siblings and the order decides on which of them covers the other.

Option 1: View B (red) has a regular UIButton as its subview. Option 2: View A (blue) has a regular UIButton as its subview.

Given Option 1 for the sake of explanations: View A (blue) has a UITapGestureRecognizer (or maybe even more, other UIGestureRecognizers) attached. What would be the most elegant approach to make sure that the UIButton does receiv开发者_Go百科e all touches on its region but also the view A (blue) receives those touches on its UITapGestureRecognizer?

If possible by any means, the solution should not involve extending the UIButton-class and manually forwarding any events from the button itself. Imagine view B would contain a lot more controls and not just a button. All of those controls should somehow allow view A to receive the touches on its UIGestureRecognizer.

I did provide two options as I do not care which of those views (A or B) comes first as long as both receive the touches.

All of my approaches so far abruptly reached dead-ends. Maybe a custom responder-chain would be a nice solution? I keep thinking that there must be an elegant solution within the entire UIKit/UIEvent/UIResponder stack.


Have you tried with this?

cancelsTouchesInView A Boolean value affecting whether touches are delivered to a view when a gesture is recognized.

@property(nonatomic) BOOL cancelsTouchesInView
0

精彩评论

暂无评论...
验证码 换一张
取 消