私は回答のために多くの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を上書きしようとした:bgImageViewTop上
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let view = super.hitTest(point, with: event)
print("hittest \(view)")
return view
}
クリックすると、クリックが適切な場所に
hittest Optional(<UIImageView: 0x7fc143413750; frame = (0 0; 240 160); opaque = NO; gestureRecognizers = <NSArray: 0x60800024e400>; layer = <CALayer: 0x60000003ffe0>>)
に起こっていることを示している、次のログを生成上のログのUIImageViewリファレンスがbgImageViewTopを参照していることを確認しました。
ここに小さなものがありますか?
あなたは 'UIGestureRecognizer'を作成するが、ハンドラの中で、あなたは' UITapGestureRecognizer'を使用しています。それは設計上のものか間違いですか? –