2017-12-06 4 views
0

私は日付コンポーネントを作成しており、GestureRecognizerに問題があります。iOS:UIViewのTapGestureRecognizerが起動しない

enter image description here

最初の行のラベルとStackViewです。 TapGestureRecognizerを接続すると、タッチ時に起動します。次の行は、ラベルとイメージビューで構成されるStackviewのサブビューです。 Recognizerをサブビュー、ラベル、イメージビューに追加することができます。それは決して解雇されず、私はuserInteractionが有効になっていることを確認しました。

何が問題なのですか?ここで

私は認識器を追加する方法の例:

func addTap(){ 
     dayLabel.isUserInteractionEnabled = true 
     imageView.isUserInteractionEnabled = true 
     isUserInteractionEnabled = true 

     tap1 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:))) 
    tap2 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:))) 
    tap3 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:))) 

    dayLabel.addGestureRecognizer(tap1!) 
    imageView.addGestureRecognizer(tap2!) 
    addGestureRecognizer(tap3!) 
    } 

    @objc func handleTap(recognizer: UITapGestureRecognizer){ 
     logger.debug("tap") 
     changeSelection() 
    } 

あなたがここで問題に煮詰め少しデモプロジェクトを見つけることができます:私は見ることができますhttps://github.com/ogezue/datedemo

+0

uicollectionviewを使用すると、はるかに簡単になります – zombie

+0

これを再現する小さな小さなプロジェクトを作成する方法はありますか? – TNguyen

+0

良いアイデア!私は上記のリンクを追加しました。ご協力いただきありがとうございます! – netshark1000

答えて

1

問題は、あなたのビューが付きカバーでなければなりません画像とラベル とそれが最後のオブジェクトに追加されますので、あなたはすべてに同じUITapGestureRecognizerを追加するには(画像やラベルで覆われた)ビューを言うので、それは

あなた旧姓タップイベントを取得することができないかもしれませんUITapGestureRecognizerのD 3つの異なるオブジェクトあなたが

が、それはすべてのビューのために、あなたの問題

+0

私はそれを3つの別個の認識装置に変更せずに変更しました。最初の行ではラベルが1つしかありませんが(サブクラスはありません) – netshark1000

+0

@ netshark1000イメージの場合は動作していますか? –

+0

最初の行は単なるラベルです。そこにそれが働いている – netshark1000

0

を解決することを願って異なるビューに同一のタップジェスチャーを追加することはできません(ラベル/ ImageViewの)あなたはタップオブジェクトがない作成する必要があります同じものが両方に加えられました。 。 。

+0

今は、しかし変更なし – netshark1000

+0

isUserInteractionEnabled =すべてのstackViewについてtrueにする –

+0

それはストーリーボードにあります – netshark1000

関連する問題