0

enter image description hereComment faire pour faire défiler UICollectionView qui se trouve sous un autre UICollectionView?

Alors voici ma question, les 4 rectangles orange que vous voyez sur le gif sont une seule UICollectionView verticale = orangeCollectionView.

Les vues "carte" verte et violette font partie d'une autre UICollectionView = overlayCollectionView. OverlayCollectionView a 3 cellules, dont l'une est un blanc UICollectionViewCell, les 2 autres sont les cartes.

Lorsque le composant overlayCollectionView affiche le code UICollectionViewCell vierge, je souhaite pouvoir faire défiler le composant orangeCollectionView. Cela me permet de faire défiler l'orangeCollectionView CEPENDANT cela ne fonctionne pas réellement pour résoudre mon problème. J'ai besoin de pouvoir faire défiler vers la gauche et la droite pour montrer les cartes, mais cela bloque toutes les touches parce que le point tombe toujours sur l'OrangeCollectionView.

Comment puis-je vérifier s'ils défilent vers la gauche/droite pour montrer les cartes? Sinon, s'ils se trouvent sur la cellule vide, faites défiler l'orangeViewController de haut en bas.

+0

Bien si le compte est 0 pour overlayCollectionView (comme vous l'avez mentionné) cacher cette vue et obtenir la référence à orange.Et quand ne pas se référer à la superposition. –

+0

@TusharSharma le nombre de overlayCollectionView sera toujours 3. L'ordre de cellule est CardCell, Blank Cell, CardCell. overlayCollectionView se concentre initialement sur la cellule vide et l'utilisateur peut faire défiler vers la gauche/droite pour voir les autres cellules. –

+0

même s'il est vide mais il est toujours là. Vous voulez parler avec la vue des parents avec l'enfant visible. Je ne pense pas que ce soit possible ou même une bonne chose à faire si possible. –

Répondre

0

Avait ce problème aussi ... N'a pas trouvé une bonne façon de le faire, mais cela fonctionne. Tout d'abord, vous devez accéder à la méthode déléguée de la vue déroulante scrollViewDidScroll(). Là, vous appelez:

if scrollView == overlayScrollView { 

    if scrollView.contentOffset.x == self.view.frame.width { // don't know which coordinate you need 

     self.overlayScrollView.alpa = 0 
    } 

} 

Ensuite, vous ajoutez une vue vide dans la vue de collection orange. L'alpha de la vue est 0 (je pense, peut-être que la couleur est juste claire, essayez-la si ça marche).

Dans le code, vous ajoutez ensuite un UISwipeGestureRecognizer à la vue que vous venez de créer et de détecter s'il y a un glissement vers la gauche ou vers la droite.

En détectant la direction de ce coup, vous pouvez simplement changer l'axe contentOffset.x de votre overlayScrollView à 0 ou self.view.frame.width * 2.

Désolé, je ne peux pas donner mon échantillon de travail code, je réponds depuis mon mobile. Ce n'est pas la bonne solution, mais quand j'ai fait une application alimentaire pour un gros client, ça a fonctionné parfaitement et personne ne s'est jamais plaint :)