最近有個需求,是在UIView裏面添加一個子視圖UITableView,然後在UIView上添加了一個UITapGestureRecognizer,之後發現UITableView裏的cell點擊沒有反應,然後分別在UITapGestureRecognizer的事件和
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{}
分別打印,結果發現只執行了UITapGestureRecognizer的事件,而
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// 若點擊了tableViewCell,則不截獲Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
與UITapGestureRecognizer類似同樣有衝突的手勢還有UILongPressGestureRecognizer和UIPanGestureRecognizer(cell左滑刪除)。