UITableView的代理方法didSelectRowAtIn

2016-09-28  本文已影响471人  virusbo

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;

上一篇 下一篇

猜你喜欢

热点阅读