UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效
Posted yxysuanfa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效相关的知识,希望对你有一定的参考价值。
#import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView * v = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 280, 100)]; v.backgroundColor = [UIColor redColor]; [self.view addSubview:v]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewClick:)]; tap.delegate = self; [v addGestureRecognizer:tap]; UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 280, 100)]; tableView.delegate = self; tableView.dataSource = self; [v addSubview:tableView]; } -(void) viewClick:(UITapGestureRecognizer*) tap { NSLog(@"点击view"); } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell * cell = [UITableViewCell new]; cell.textLabel.text = @"測试"; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"点击单元格"); } #pragma mark - UIGestureRecognizerDelegate - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件 if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) { return NO; } return YES; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
解决方式是 加入手势的代理 重写- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 函数
下面是代码
以上是关于UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效的主要内容,如果未能解决你的问题,请参考以下文章
在受限的 UIScrollView 中嵌入 UITableView 和其他 UIView
滚动 UICollectionView 会导致父 UIView 中的 UITableView 将 Collection View 推出 Frame