UITableViewCell addSubview vs insertSubview:atIndex:



所以我的问题是,我想在我的单元格中添加一个带有点击手势识别器的视图。起初,我使用 insertSubview:view atIndex:0 添加了它,但不是触发 didSelectRow:atIndexPath 的手势识别器正在触发。经过长时间的故障排除,我发现如果我使用 addSubview 添加它,它可以工作。我猜 insertView:atIndex 正在插入 UITableViewCell.contentView 下方的视图,这就是为什么 didSelectRow:atIndexPath 代替手势识别器触发的原因,我只想知道这是否属实?

dr:你是对的。

通过调用 insertSubview:view atIndex:0,您将视图的 z 值设置为可能的最低值。您告诉超级视图您希望超级视图中的所有其他视图都覆盖在视图顶部。

调用 addSubview 会将新视图添加到超级视图中存在的视图堆栈之上;从而为其提供最大 z 值。

如果您仍希望使用第一种方法,则可以使用超级视图中当前存在的子视图数,如下所示:

[someSUperView insertSubview:view atIndex:([[view subviews] count] -1)];

最新更新