如何让触摸事件穿透一个View
偶然间发现,如何屏蔽或者让触摸事件穿透一个view是一个很简单的事情。
现象:
源码:
// // ViewController.m // UserInteraction // // Created by YouXianMing on 14/10/23. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 新建按钮 UIButton *button = [[UIButton alloc] initWithFrame:self.view.bounds]; [button addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; // 覆盖在上层的view UIView *testView = [[UIView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:testView]; testView.userInteractionEnabled = YES; } - (void)buttonEvent:(UIButton *)button { NSLog(@"触摸事件"); } @end
其实原理很简单,一个触摸事件时候被view接受或者屏蔽,完全由这个参数决定,那就是userInteractionEnabled。
所以,当你想屏蔽掉一个事件不让他穿透,设置覆盖的view的userInteractionEnabled为NO即可。