在tableView上加了一個(gè)點(diǎn)擊手勢(shì), 但didSelectRowAtIndexPath的代理方法就不執(zhí)行了,只會(huì)執(zhí)行手勢(shì)事件, 原因是應(yīng)該是UITapGestureRecognizer吞掉了touch事件摇展,導(dǎo)致didSelectRowAtIndexPath方法無法響應(yīng)雌芽。
解決方法是實(shí)現(xiàn)UIGestureRecognizerDelegate的代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
,
在它的代理中區(qū)分點(diǎn)擊控件,選擇是否響應(yīng)手勢(shì).
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
//點(diǎn)擊的view的類名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// UITableViewCellContentView就是點(diǎn)擊了tableViewCell,則不截獲點(diǎn)擊事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]){
return NO;
}
return YES;
}