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

テーブルビューのすべての 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

null ではない、追加

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

コンソールの出力を確認します

コードを試したところ、タップが正しく受信されました

于 2012-06-02T11:11:57.040 に答える