シングルタップジェスチャをUICollectionView
に追加します。セル選択の邪魔になりません。
CollectionViewのセルのない部分で他のタップが必要です。
XCode8を使用して、Swift 3。
override func viewDidLoad() {
...
collectionView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tap)))
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
func tap(sender: UITapGestureRecognizer){
print("tapped")
}
ええ、今では邪魔になります。セルをタップすると、「タップ」がログに記録されます。
これ以上のトレースが見つかりませんでした。セル選択の実装方法に関するアイデアや、このタスクを達成するためのアイデアはありますか?
ジェスチャレコグナイザーを追加したいが、ターゲットビューからタッチを盗みたくない場合は、 UIGestureRecognizer.cancelsTouchesInView
gestureRecognizer
インスタンスをfalseにします。
didSelectItem
を強制しようとする代わりに、次のようにindexPathやセルを取得できます。
func tap(sender: UITapGestureRecognizer){
if let indexPath = self.collectionView?.indexPathForItem(at: sender.location(in: self.collectionView)) {
let cell = self.collectionView?.cellForItem(at: indexPath)
print("you can do something with the cell or index path here")
} else {
print("collection view was tapped")
}
}