8

我在 aviewForHeaderInSection上有一个自定义UITableView- 让我们称之为HeaderCell(一个简单的子类UITableViewCell),它具有最奇怪的行为:

  • 当我单击部分标题时:

    • 它触发了tableView:didSelectRowAtIndexPath:该部分indexPath的第一个UITableViewCell。就像我在点击单元格一样,但没有。我点击标题。

问题是,如果我用一个简单的替换那个习惯HeaderCell,那就不会再发生了!我检查了与该xib及其类链接的任何操作,找不到任何或任何xib操作。viewForHeaderInSectionUIViewaddTarget:

其他奇怪的因素:它不会发生在第一个 HeaderCell(第 0 节)上,只发生在 >= 1 的部分。

注意:我对此有一个快速修复,但对于以后的支持来说有点风险

HeaderCell课堂上,我只需要实现:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    return;
}

这是最后的解决方案。以前有人检测过这种行为吗?

4

4 回答 4

5

您不应该使用UITableViewCell页眉/页脚的子类。使用UITableViewHeaderFooterView(如果您可以使用> = iOS6)或UIView其他方式。

于 2013-11-18T10:21:58.277 回答
2

如果您使用 的是页眉/页脚,请使用return cell.contentView而不是return cellUITableViewCell

于 2018-05-18T18:08:09.113 回答
1

您可以通过 setEnableUserInteraction 方法来完成。请参考给出的代码,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *cellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
[cell setUserInteractionEnabled:YES];


if([indexPath row] == 0)
    [cell setUserInteractionEnabled:NO];



return cell;


}

希望对你有帮助 :)

于 2013-09-05T12:40:44.587 回答
0

这是一个旧线程,但如果您将 UITableViewCell 的子类用于标题,我刚刚遇到了这种情况以及另一种可能的避免这种情况的方法,然后只返回内容视图而不是 headerforView 函数中的完整单元格。

于 2020-03-17T12:33:53.893 回答