Ios中手势点击事件和tableView点击事件冲突

当前页面上内容有:

viewController上添加了一个手势,

viewController上加了一个子控件TableView。

当点击TableView的cell选择方法的时候,总是先执行viewController。


解决方法:

给手势添加代理方法:

UIGestureRecognizerDelegate


实现手势代理方法:

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


    if ([NSStringFromClass([touch.viewclass]) isEqualToString:@"UITableViewCellContentView"]) {

        return NO;

    }

    return YES;

}


如果你的不是TableView,那么在 isEqualToString 写入对应的信息字段即可


出现的问题:

在手机版本为8.3.2真机测试的时候。

测试还原场景:

1、点击某个入口,进入有手势和cell冲突页面

2、返回入口页面

3、再次点击入口,程序崩溃。

提示原因 [yourController gestureRecognizer:shouldReceiveTouch:]:message sent to deallocated instance 0*1582426e0。

意思应该是dealloc不存在的手势代理事件。


解决办法就是把代理关掉,尼玛,最后的结果是冲突没有解决。

在8.3的系统上测试有用,在其他的貌似没有(有也不清楚。因为公司配置的测试机记那么几台,模拟器测试,9.0以上没有,好像7.0上8.0下的也没有)



你可能感兴趣的:(iOS)