iOS下只有几个控件可以点击的实现方案

iOS 开发中有时候在做引导的时候会出现只有某一个或者几个控件可以点击,其他的都是不能点击的并且有一个半透明的黑色背景,按照常理来说黑色的背景view会遮盖掉所有的点击响应事件,这里提供一种解决方案,在事件响应链里面去修改手势的响应:

1.首先随便做一个VC,这里我才用了push到下一个界面,其中的button1 和button2 都可以push到下一个界面,但是我这里只想让button1可以点击


2.这样我们自定义一个覆盖物CusCover用以实现部分遮挡 

.h文件

#import@interface CusCover : UIView

//可以被响应的views

@property(nonatomic,strong) NSArray *visbilityRects;

@end

.m文件

#import "CusCover.h"

@implementation CusCover

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

{

for(UIView *subview in self.visbilityRects)

{

CGPoint btnPointInA = [subview convertPoint:point fromView:self];

if ([subview pointInside:btnPointInA withEvent:event]) {

return subview;

}

}

return [super hitTest:point withEvent:event];

}

@end

这样就实现了自定义的cover。

3.调用自定义的cover

CusCover *cover=[[CusCover alloc]init];

cover.backgroundColor=[UIColor blackColor];

cover.alpha=0.3f;

cover.frame=self.view.bounds;

//想让哪些view可以响应事件

NSArray *visibilityViews=@[self.field,self.button];

cover.visbilityRects=visibilityViews;

[self.view addSubview:cover];

这样写的话就是一个输入框可以响应,button 可以响应(此处为button1),在点击field的时候,其成为了第一响应着可以输入,手势穿透了cover,button1 也可以push到下一个界面


到此已经实现了需求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容