添加手势识别器到tableView头不起作用?

我知道一个“表视图标题”(表视图的最顶部)是一个视图所以我尝试添加一个UITapGestureRecognizer,但它不工作…

代码很简单:

- (void)tap:(UITapGestureRecognizer *)recognizer { // do something } UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; [self.tableView.tableHeaderView addGestureRecognizer:recognizer]; 

任何提示在这里关心? 非常感谢

这里是适合我的东西:相反,添加这个:

 self.tableView.tableHeaderView 

我在桌面上的每个UILabel上添加手势识别器。

  -(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UILabel *headerLabel = [[UILabel alloc]init]; headerLabel.tag = section; headerLabel.userInteractionEnabled = YES; headerLabel.backgroundColor = [UIColor greenColor]; headerLabel.text = [NSString stringWithFormat:@"Header No.%d",section]; headerLabel.frame = CGRectMake(0, 0, tableView.tableHeaderView.frame.size.width, tableView.tableHeaderView.frame.size.height); UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(catchHeaderGesture:)]; tapGesture.cancelsTouchesInView = NO; [headerLabel addGestureRecognizer:tapGesture]; return headerLabel; //return nil; } -(void)catchHeaderGesture:(UIGestureRecognizer*)sender { UILabel *caughtLabel = (UILabel*)sender.view; NSLog(@"header no : %d", caughtLabel.tag); } 

我希望有帮助。

首先确保您在viewDidLoad或viewWillAppear中调用此代码部分

 UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]; [self.tableView.tableHeaderView addGestureRecognizer:recognizer]; 

其次,请确保

 self.tableView.tableHeaderView 

不是null,添加

 NSLog([self.tableView.tableHeaderView description]); 

并检查控制台的输出

我刚刚试过你的代码,水龙头正确收到