2017-06-14 5 views
0

私は回答のために多くの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を参照していることを確認しました。

ここに小さなものがありますか?

+1

あなたは 'UIGestureRecognizer'を作成するが、ハンドラの中で、あなたは' UITapGestureRecognizer'を使用しています。それは設計上のものか間違いですか? –

答えて

0

UITapGestureRecognizerを使用します。これはUIGestureRecognizerから継承されます。

Obligatory link to the documentation for it.

+0

ありがとうございました。自己学習:「オンラインで解決策を見つけることができない場合、問題は自分のコードではばかげた愚かなミスです!」 – Bonton255

関連する問題