In the iOS UIView event compartment, pass pointInside: withEvent:
Multi-layer views overlay the middle layer to achieve Event Response in the compartment View
/// DataViewController. m // UIScrollViewPanGesture // Created by Peace on 11/17/15. // Copyright©2015 Peace. all rights reserved. // # import "DataViewController. h "@ interface TestView1: UIView @ end @ implementation TestView1-(BOOL) pointInside :( CGPoint) point withEvent :( UIEvent *) event {CGRect frame = CGRectMake (0, 0, self. frame. size. width, self. frame. size. height); BOOL value = (CGRectContainsPoint (frame, point); NSArray * views = [self subviews]; for (UIView * subview in views) {value = (CGRectContainsPoint (subview. frame, point); if (value) {return value ;}} return NO;}-(void) touchesBegan :( NSSet <UITouch *> *) touches withEvent :( UIEvent *) event {NSLog (@ "1: xxxx") ;}- (void) touchesEnded :( NSSet <UITouch *> *) touches withEvent :( UIEvent *) event {NSLog (@ "1: yyyy ") ;}@ end @ interface TestView2: UIView @ end @ implementation TestView2-(BOOL) pointInside :( CGPoint) point withEvent :( UIEvent *) event {CGRect frame = CGRectMake (0, 0, self. frame. size. width, self. frame. size. height); BOOL value = (CGRectContainsPoint (frame, point); return value;}-(void) touchesBegan :( NSSet <UITouch *> *) touches withEvent :( ui* event *) event {NSLog (@ "2: xxxx") ;}- (void) touchesEnded :( NSSet <UITouch *> *) touches withEvent :( UIEvent *) event {NSLog (@ "2: yyyy ");} @ end/** ViewController */@ interface DataViewController () @ end @ implementation DataViewController-(void) viewDidLoad {[super viewDidLoad]; // The White view accepts the Click Event self. view. backgroundColor = [UIColor whiteColor]; // red view (*** Note: Click events are not accepted ***) TestView1 * v1 = [[TestView1 alloc] initWithFrame: CGRectMake (50.f, 50.f, 200.f, 200.f)]; v1.backgroundColor = UIColor. redColor; [self. view addSubview: v1]; // The Yellow view accepts the Click Event TestView2 * v2 = [[TestView2 alloc] initWithFrame: CGRectMake (0.f, 0.f, 100.f, 100.f)]; v2.backgroundColor = UIColor. yellowColor; [v1 addSubview: v2];}-(void) touchesBegan :( NSSet <UITouch *> *) touches withEvent :( UIEvent *) event {NSLog (@ "3: xxxx ");}-(void) touchesEnded :( NSSet <UITouch *> *) touches withEvent :( UIEvent *) event {NSLog (@" 3: yyyy ");} @ end