UITableView嵌套UICollectionView时,UICollectionViewCell中的按钮无法响应点击事件,一直在响应tableView的didSelectRowAt方法。
解决这个问题,可以在UICollectionViewCell中添加hitTest: withEvent:方法:
import Foundation
class GAPictureListCell: UICollectionViewCell {
override func awakeFromNib() {
super.awakeFromNib()
}
@IBAction func tapCancelAction(_ sender: Any) {
}
}
extension GAPictureListCell {
/// hitTest: withEvent: 是UIView 里面的一个方法,该方法的作用 在于在视图的层次结构中寻找一个最适合的 view 来响应触摸事件。
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
let viewPoint: CGPoint = self.convert(point, to: self)
for sub in self.subviews {
if sub is UIButton {
let isContains = sub.frame.contains(viewPoint)
if isContains {
return sub
}
}
}
return view
}
}