UITableViewCell中點擊其餘控件的點擊事件是個比較奇葩的問題,就是UITableViewCell中有多個imageView子視圖,每一個imageView都添加單擊手勢。也作了對手勢事件和UItableViewCell點擊事件的判斷,但仍是會執行手勢操做時仍是會執行UItableViewCell的點擊事件,形成手勢衝突。函數
先提一下解決UITableViewCell點擊事件和手勢共存的方法:spa
// 若爲UITableViewCellContentView(即點擊了tableViewCell),則不截獲Touch事件3d
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {代理
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {事件
return NO;it
}event
return YES;table
}class
可是,做了上述判斷後仍是有問題,所以又去想了其餘的解決辦法:方法
就是自定義一個UIImageView類,在類裏面重寫-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
函數,而後經過代理實現上述手勢要完成的操做。
這樣就不會觸發UITableView的didSelectedRowAtIndexpath方法。