2016-12-16 79 views
0

私はいくつかのセクションとヘッダを持つUICollectionViewを持っており、セクションヘッダのタップを検出したいと思います。Swift 3 collectionViewヘッダのタップ検出の実装

それは、細胞のため

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 

のおかげで正常に動作していますが、セクションヘッダに固有のものはありません。

私は、動作しているcollectionViewにtapGestureRecognizerを実装しようとしましたが、その場合、上記の関数はもうトリガーされません。

セクションヘッダーだけでなくセルでもタップ検出を実装する簡単な方法はありますか?あなたの助けのための

感謝:)

+1

ヘッダービュー自体に 'UITapGestureRecognizer'を実装することができます。ヘッダービューをタップすると、対応するセルを選択するのと同じアクションが発生します。 – Randy

答えて

0

ヘッダがを表示し、それにtargetを設定すると、あなたが空白のボタンを設定することができます。 action各ヘッダービューをクリックしてtagindexPath.sectionと設定する必要があります。

2

解決策は、tapGestureRecognizerをcollectionViewに直接接続するのではなく、セクションに直接接続することでした。そしてタグチップのJohnに感謝します。

override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { 
    ... 
    let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "inputStartHeader", for: indexPath) as! GameInputStartHeader 
    headerView.tag = indexPath.section 

    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(tapDetected)) 
    headerView.addGestureRecognizer(tapGestureRecognizer) 
    ... 
} 
+0

ここでは、ヘッダーをデキューするたびに多くの認識機能を持つことになります。レコグナイザがすでに存在することを確認するか、新しいレコグナイザを追加する前にレコグナイザを削除してください。 – palme

関連する問題