当你在一个View上添加了Tap点击事件,同时你又在这个View上放了一个TableView,那么tableViewcell的点击事件就会失去响应。
分析原因:当View上添加了Tap事件之后,Tap在响应链中的位置高于tableViewcell的Select。(tap事件会cancelTouchsInView),所以在View上接收不到来自table的事件,造成失去响应。
因此,当我们点击cell的时候要让tap失去响应或者同时相应。
做法:
如果想让Tap和cell同时相应,将cancelTouchsInView属性设置为NO即可。如果想让table响应cell事件,table外响应Tap事件,那么需要设置一下gesture的代理。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
当点击cell的时候Tap在响应链中无效,在table外能够响应,OK!