将手势识别器添加到tableView标头不起作用?
我知道,一个“表视图头”(表视图的最*的一部分)是一个查看 所以我尝试将UITapGestureRecognizer添加到它,但它不工作...将手势识别器添加到tableView标头不起作用?
代码很简单:
- (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);
}
我希望有帮助。
'tableView.tableHeaderView'与'viewForHeaderInSection'不一样:' –
只要你使用'obj.userInteractionEnabled = YES',那么它就可以工作。我用'tableView.tableHeaderView'来使用它 –
所有 首先请确保您调用viewDidLoad中或该代码段viewWillAppear中
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.tableView.tableHeaderView addGestureRecognizer:recognizer];
其次,请确保
self.tableView.tableHeaderView
不为空,加
NSLog([self.tableView.tableHeaderView description]);
并检查控制台的输出
我只是想你的代码和丝锥收到正确
谢谢,我的tableView头部视图是一个“UILabel”。我添加了“NSLog([self.tableView.tableHeaderView description]);”到我的代码,它不工作仍然....但我发现,在控制台中,有一些像“userInteractionEnabled = NO”。然后我将一行代码添加到该标签:“label.userInteractionEnabled = YES”,最后它可以工作!你知道原因吗? :-) – joshz
@joshz:这是因为UILabel上的用户交互默认是禁用的。 – user523234
对于uiimageview也是如此 – baskInEminence
你在哪儿打电话给这段代码? –
您是否在init或viewDidLoad或其他地方调用它? –