質問: currentCardView!.cv.indexPathForItemAtPoint(convertLocation) if indexPath != nil { return false } return true } ``` ![画像の説明をここに入力](https://i.stack.imgur.com/RQWeQ.png)
回答: `UIGestureRecognizerDelegate`を実装して以下のような判定を行います。 Swift3の記述ですが、Swift2でもデリゲートメソッドの体裁以外は特に変わりません。 ``` func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { if self.collectionView?.indexPathForItem(at: touch.location(in: self.collectionView)) != nil { return false } return true } ``` `GestureRecognaizer`のタッチ座標から、`UICollectionView`の`indexPath`を取得します。 取得できた場合、どこかのセルの座標なので、`false`を返します。これにより、`UICollectionViewCell`のタップイベントが優先して実行されます。 `nil`が返却された場合は、セルのない座標なので`true`を返却して`GestureRecognaizer`のイベントを実行します。