多层UIview触摸事件的穿透(非重叠子控件互不影响)

本文介绍了一个在iOS应用中处理多层UIview触摸事件互不影响的方法。通过创建一个基础视图类PBaseView,重写hitTest方法,使得事件不会在其本身响应,而是传递给上层视图。在实际应用中,创建了三个继承自PBaseView的子视图,它们的事件处理互不干扰,提供了一种有效的UI交互解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中经常遇到这样的需求,屏幕被分成几个区域,并且每个区域都有很多不定时外部事件,要求层次分明互不影响,这个时候对UIview的触摸事件控制就很重要,下面是一个例子:

1.创建一个UIView的基础类,PBaseView,它的.m文件实现:

@implementation PBaseView

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{

    UIView *hitView = [super hitTest:point withEvent:event];

    if(hitView == self){

        return nil;

    }

    return hitView;

}

@end

2.创建三个子view,都继承于PBaseView,分别为PFirstView、PSecondView、PthirdView,其中一个PFirstView.m如下图:

@interface PFirstView()

@property (nonatomic, strong)UIViewController *superVc;

@end

@implementation PFirstView

 

- (instancetype)initWithFrame:(CGRect)frame superVc:(UIViewController *)superVc{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值