UITapGestureRecognizer與UITableView同在一個頁面導致didSelectRowAtIndexPath方法不響應
今天測試給我提了一個需求,就是在做用戶篩選的時候,點擊空白區域,回收篩選列表,我用了手勢UITapGestureRecognizer,但是這時就出現了問題,因為列表是動態添加的,所以不能指定空白區域的frame,並且導致了UITableView的didSelectRowAtIndexPath方法不響應,通過百度,我發現原來是UITapGestureRecognizer的didSelectRowAtIndexPath的響應。
解決方法:
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
NSLog(@"gestureRecognizer = %@",NSStringFromClass([touch.view class]));
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UIView"])
{
return NO;
}
else if ([NSStringFromClass([touch.view class]) isEqualToString:@"InvestDetailSortButton"])
{
return NO;
}
return YES;
}
通過打印,找到能點擊的區域的類名,通過類名來區分,這樣就可以了。
UITapGestureRecognizer與UITableView同在一個頁面導致didSelectRowAtIndexPath方法不響應