Swift 5 中 UICollectionView Footer 内按钮无法完全点击问题
问题修复方案
核心原因
按钮仅顶部可点击的问题由三个错误写法共同导致:
- 按钮直接添加到了
UICollectionViewCell实例本身,没有添加到官方指定的子视图容器contentView中,contentView默认会覆盖在cell最上层,会拦截超出它范围的子视图交互 - 手动关闭了
contentView的用户交互权限,进一步阻断了事件传递路径 - 按钮的布局约束绑定的是cell本身的锚点,而非
contentView的锚点,会导致按钮展示范围和交互判定范围错位
修复代码
将你的init方法替换为以下代码即可:
override init(frame: CGRect) { super.init(frame: frame) self.backgroundColor = .green // 注释掉关闭contentView交互的错误代码 // self.contentView.isUserInteractionEnabled = false // 将按钮添加到contentView容器上 contentView.addSubview(selectLabel) selectLabel.translatesAutoresizingMaskIntoConstraints = false selectLabel.heightAnchor.constraint(equalToConstant: 70).isActive = true selectLabel.widthAnchor.constraint(equalToConstant: 120).isActive = true selectLabel.backgroundColor = .blue // 约束绑定到contentView的锚点 selectLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0).isActive = true selectLabel.centerXAnchor.constraint(equalTo: contentView.centerXAnchor, constant: 0).isActive = true selectLabel.addTarget(self, action: #selector(onSeeAllTapped(_:)), for: .touchUpInside) }
额外校验
如果修改后仍有问题,请检查你为该Footer cell设置的高度是否≥70,若cell高度小于按钮高度,超出cell范围的按钮区域依然无法响应点击。
内容的提问来源于stack exchange,提问作者Gurpreet Singh
相关产品推荐
相关产品推荐

