项目中所有的didselect方法都不走了
原因是:我项目的tabbar是自定义的 我给tabbar的view添加了一个手势 手势冲突
可参考:http://blog.csdn.net/zhangyanjinlichang/article/details/47173363
可能原因:
- delegate没有设置。
- 可能tableview被其他控件覆盖。
- 添加UITapGestureRecognizer手势识别后,UITableView的didSelectRowAtIndexPath失效,两者之间手势发生冲突。
答案:
- 前两种情况有没有问题,有的话解决掉,没有就跳过。
- 如果前两种情况都不是,那看看是不是你在什么地方添加了手势,如果添加了可能原因是:
UITapGestureRecognizer截获了touch事件,导致didSelectRowAtIndexPath方法无法响应。
查阅了相关文档后找到了一种可行的解决方法:重写UIGestureRecognizerDelegate中的- (BOOL)gestureRecognizer:(UIGestureRecognizer )gestureRecognizer shouldReceiveTouch:(UITouch )touch方法。
重写内容如下:
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *oneTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyBoard)] autorelease];
oneTap.delegate = self;
oneTap.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:oneTap];
}
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
NSLog(@"%@", NSStringFromClass([touch.view class]));
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
再次调试,这回didSelectRowAtIndexPath响应了,解决UITapGestureRecognizer手势截获Touch事件的问题!