4

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

代码很简单:

- (void)tap:(UITapGestureRecognizer *)recognizer
{
    // do something
}

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

这里有什么注意事项吗?多谢

4

2 回答 2

4

这是对我有用的东西:而不是添加:

self.tableView.tableHeaderView

我在 tableview 上的每个 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);
}

我希望这会有所帮助。

于 2012-10-07T05:21:16.797 回答
3

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

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

其次,请确保

self.tableView.tableHeaderView

不为空,添加

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

并检查控制台的输出

我刚刚尝试了您的代码,并且正确收到了水龙头

于 2012-06-02T11:11:57.040 回答