且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何让触摸事件穿透一个View

更新时间:2022-08-20 11:33:28

如何让触摸事件穿透一个View

如何让触摸事件穿透一个View

偶然间发现,如何屏蔽或者让触摸事件穿透一个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

所以,当你想屏蔽掉一个事件不让他穿透,设置覆盖的view的userInteractionEnabled为NO即可。