2017-01-30 1 views
0

Je travaille sur un jeu basé sur une grille (comme dragueur de mines). C'est une grille 2d que j'affiche en utilisant un UICollectionView qui contient un ensemble de cellules UICollectionViewCell personnalisées. Je veux être capable d'écouter des événements tactiles sur des cellules individuelles. Est-ce bien d'ajouter un UITapGestureRecognizer() à chacune des cellules (sur une carte 20x20, par exemple). Ou y a-t-il un meilleur moyen?Meilleurs principes pour ajouter des reconnaisseurs de mouvements dans les applications ios rapides

Je comprends de la réponse Ahmad qu'utiliser cela fonctionne pour les robinets simples:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    print(indexPath.row) 
} 

Cependant, je veux différents gestionnaires d'événements pour simple vs doubles robinets sur les cellules.

Répondre

0

Si vous voulez laisser le conteneur de base en tant que UICollectionView (ce que je trouve une bonne idée), je doute que vous ayez besoin d'ajouter UITapGestureRecognizer, tout ce que vous avez à faire est de laisser votre classe (Controller) conforme à UICollectionViewDelegate son Déléguez et implémentez collectionView:didSelectItemAtIndexPath:.

En outre, l'avantage que vous aurez la mise en œuvre de cette méthode est que vous pouvez facilement déterminer quelle cellule a été sélectionnée, en vérifiant ce qui est le indexPath.row de la cellule sélectionnée, comme suit:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    print(indexPath.row) 
} 

ne pas oublier de:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { //... 

EDIT:

Dans le cas où vous souhaitez ajouter un double tap fonctionnalité à votre collection, je suggère de vérifier this answer pour y parvenir.

J'espère que cela a aidé.

+0

S'il vous plaît vérifier ma vérification sur la réponse –

+0

Merci. C'était super utile. Très appréciée. – sridhar

+0

@sridhar Content de vous aider. btw, si cette réponse est la bonne pour votre question, vous devriez l'accepter, cela vous donne +2 points, me donne +15 points et le plus important est de faire savoir aux téléspectateurs que c'est la solution. –