我探讨了许多SO帖子的答案,但我无法得到它的工作。UIGestureRecognizer未被调用
我有一个UICollectionView。 UICollectionViewCell是以编程方式创建的。我想要对UICollectionViewCell的子视图进行点击操作,并且不需要点击UICollectionViewCell的其余部分。
下面是UICollectionViewCell的代码。
override init(frame: CGRect) {
let bgImageViewTop = UIImageView()
addSubview(bgImageViewTop)
// constraints...
bgImageViewTop.isUserInteractionEnabled = true
bgImageViewTop.addGestureRecognizer(UIGestureRecognizer(target: self, action: #selector(handleClick(_:))))
}
func handleClick(_ sender:UITapGestureRecognizer) {
print("click")
}
函数handleClick从不调用。 bgImageViewTop没有子视图。
我试图重写则hitTest检查所发生的事情,像这样:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
print("hittest \(view)")
return view
}
点击bgImageViewTop产生以下日志,这表明点击是要在正确的地方
hittest Optional(<UIImageView: 0x7fc143413750; frame = (0 0; 240 160); opaque = NO; gestureRecognizers = <NSArray: 0x60800024e400>; layer = <CALayer: 0x60000003ffe0>>)
我验证了上述日志中的UIImageView引用是指bgImageViewTop。
我在这里错过了一些小东西吗?
创建'UIGestureRecognizer'但在处理程序中使用'UITapGestureRecognizer'。是通过设计还是只是一个错误? –