美文网首页
UITableView的代理方法didSelectRowAtIn

UITableView的代理方法didSelectRowAtIn

作者: virusbo | 来源:发表于2016-09-28 14:22 被阅读471次

UITableView 拥有属于自己的点击事件,

在将一个UITableView 的控件放在其它视图上, 并且其它视图需要添加手势进行操作的情况下,

我们会发现我们点击UITableView的cell的时候, 并没有触发代理方法:didSelectRowAtIndexPath

在UITableView上添加了UITapGestureRecognizer后会导致didSelectRowAtIndexPath失效,原因是UITapGestureRecognizer会截取了tableView的touch事件,导致无法响应行选择,解决方法是重写UIGestureRecognizerDelegate中的

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer

shouldReceiveTouch:(UITouch *)touch

{

if([NSStringFromClass([touch.view class])isEqualToString:@"UITableViewCellContentView"]){//如果当前是tableView

//做自己想做的事

return NO;

}

return YES;

}

也可以根据 添加手势的View来判定:

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

if([touch.viewisKindOfClass:[UIScrollViewclass]]) {

returnYES;

}

returnNO;

相关文章

网友评论

      本文标题:UITableView的代理方法didSelectRowAtIn

      本文链接:https://www.haomeiwen.com/subject/spghyttx.html