iOS下只有幾個控件可以點(diǎn)擊的實(shí)現(xiàn)方案

iOS 開發(fā)中有時候在做引導(dǎo)的時候會出現(xiàn)只有某一個或者幾個控件可以點(diǎn)擊,其他的都是不能點(diǎn)擊的并且有一個半透明的黑色背景,按照常理來說黑色的背景view會遮蓋掉所有的點(diǎn)擊響應(yīng)事件,這里提供一種解決方案,在事件響應(yīng)鏈里面去修改手勢的響應(yīng):

1.首先隨便做一個VC,這里我才用了push到下一個界面,其中的button1 和button2 都可以push到下一個界面,但是我這里只想讓button1可以點(diǎn)擊


2.這樣我們自定義一個覆蓋物CusCover用以實(shí)現(xiàn)部分遮擋?

.h文件

#import@interface CusCover : UIView

//可以被響應(yīng)的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

這樣就實(shí)現(xiàn)了自定義的cover。

3.調(diào)用自定義的cover

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

cover.backgroundColor=[UIColor blackColor];

cover.alpha=0.3f;

cover.frame=self.view.bounds;

//想讓哪些view可以響應(yīng)事件

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

cover.visbilityRects=visibilityViews;

[self.view addSubview:cover];

這樣寫的話就是一個輸入框可以響應(yīng),button 可以響應(yīng)(此處為button1),在點(diǎn)擊field的時候,其成為了第一響應(yīng)著可以輸入,手勢穿透了cover,button1 也可以push到下一個界面


到此已經(jīng)實(shí)現(xiàn)了需求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容