UITableViewCell addSubview 与 insertSubview:atIndex:

Posted

技术标签:

【中文标题】UITableViewCell addSubview 与 insertSubview:atIndex:【英文标题】:UITableViewCell addSubview vs insertSubview:atIndex: 【发布时间】:2013-10-21 20:26:14 【问题描述】:

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

【问题讨论】:

【参考方案1】:

tl;dr:你是对的。

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

调用 addSubview 将新视图添加到父视图中存在的视图堆栈之上;从而给它一个最大的 z 值。

如果您仍然喜欢使用第一种方法,则可以使用当前存在于父视图中的子视图数量,如下所示:

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

【讨论】:

以上是关于UITableViewCell addSubview 与 insertSubview:atIndex:的主要内容,如果未能解决你的问题,请参考以下文章

SnapKit 中的两个视图可以互相使用吗?

iOS:从 UIGestureRecognizer 崩溃的关键窗口子视图元素

UITableViewCell 中的 UIDatePicker 更新 UITableViewCell 文本标签

突出显示的 UITableViewCell 和选定的 UITableViewCell 有啥区别?

斯威夫特 - UITableViewCell?不能转换为 UITableViewCell

UITableviewcell的性能问题