之前項(xiàng)目中遇到了一個(gè)BUG玷或,該BUG描述:在UIView中同時(shí)存在單點(diǎn)手勢與tableView。當(dāng)點(diǎn)擊tableview中的cell時(shí)片任,并不會(huì)觸發(fā)didSelectRowAtIndexPath這個(gè)方法偏友。
當(dāng)遇到這個(gè)BUG的時(shí)候我的排查思路為:
1.tableView的delegate有沒有設(shè)置。
2.檢查UIView中各控件的層級關(guān)系與加載順序对供,即tableView是否被其他控件覆蓋位他。
3.添加的手勢與tableview有點(diǎn)擊事件沖突。
經(jīng)過排查后發(fā)現(xiàn)出在點(diǎn)擊事件沖突产场,那么接下來就是解決這個(gè)沖突鹅髓。
首先設(shè)置代理
UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doSomething)];
tapGesture.delegate = self;
然后覆蓋方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
重新運(yùn)行下代碼,發(fā)現(xiàn)點(diǎn)擊事件的沖突被解決京景。
希望對有緣人有幫助窿冯。如果有不足或錯(cuò)誤的地方,還望各位大佬指出确徙,共同進(jìn)步醒串。