解决UITexFiled,UITableView与手势冲突

来源:互联网 发布:淘宝远望手机可靠吗 编辑:程序博客网 时间:2024/05/21 18:25

IOS 不能触发didSelectRowAtIndexPath事件有三种可能:

  • delegate 没有设置。

  • 可能tableview被其他控件覆盖。

  • 手势与tableview点击事件冲突


对添加的手势进行设置:
1) 遵循协议:UIGestureRecognizerDelegate
2) 在添加手势时指定代理

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)];    tap.delegate = self;[self.view addGestureRecognizer:tap];

3) 实现代理方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{    if ([touch.view isKindOfClass:[UITextField class]])    {        return NO;    }    // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {        return NO;    }    return YES;}
0 0