iOS 开发中遇到TableView 与单击手势冲突问题

2017-02-09  本文已影响0人  镌写不一样的人生

在iOS 开发过程中,有时会遇到界面既需要tableView 的点击事件,又需要在当前View添加手势,我们知道,如果直接加手势,会导致tableView的代理方法- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  在点击cell 时不调用,偶然间发现这种情况下,长按cell 反而会触发这个代理方法,从而可以知道,如果出现tableView的cell点击代理方法不执行,长按cell反而有响应 ,十有八九是与手势冲突了,这样提供了一个定位该类bug的思路。下面说说解决tableView 与手势冲突的办法,在手势的代理方法内,区分手势的响应区域即可,代码如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

if ([touch.view  isKindOfClass:[UITableViewCell class]]) {

return NO;

}else if ([touch.view.superview isKindOfClass:[UITableViewCell class ]]){

return NO;

}

return YES;

}

上一篇下一篇

猜你喜欢

热点阅读