昨天想著寫一個(gè)帶有控件的彈窗体谒,并且點(diǎn)擊空白區(qū)域可以退出媒楼。
“彈窗”我是用hidden屬性來(lái)實(shí)現(xiàn)的掀宋,本意是加在空白view上然后一起隱藏一起顯示。
self.blankView= [[UIViewalloc]initWithFrame:self.view.frame];
self.blankView.backgroundColor = [UIColor clearColor];
self.blankView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(blanckViewClick:)];
[self.blankView addGestureRecognizer:tapGesture];
[self.viewaddSubview:self.blankView];
[self.blankView addSubview:self.collectionView];
點(diǎn)擊事件為
-
(void)bgViewClick:(UITapGestureRecognizer*)gesture {
self.imageBgView.hidden = YES;
}
結(jié)果發(fā)現(xiàn)點(diǎn)擊collectionViewCell也觸發(fā)了blankView的點(diǎn)擊事件盔性。
網(wǎng)上看了一下說(shuō)是檢測(cè)手勢(shì)的點(diǎn)擊位置,判斷在不在子view里面呢岗∶嵯悖看了下代碼實(shí)在很麻煩,然后我想到了另一個(gè)辦法后豫。
我把collectionView設(shè)為了self.view的子view
[self.view addSubview:self.blankView];
[self.view addSubview:self.collectionView];
如果擔(dān)心collectionView在blankView下面可以加上下面這句
[self.view bringSubviewToFront:self.collectionView];
并且將隱藏view的方法寫在了BOOL屬性 showAlert的setter里面
-
(void)setShowAlert:(BOOL)showAlert {
_showAlert= showAlert;
self.blankView.hidden=self.collectionView.hidden= !showAlert;
}
-
(void)bgViewClick:(UITapGestureRecognizer*)gesture {
self.showAlert=NO;
}
問(wèn)題解決