J'ai un bouton dans une cellule personnalisée d'une collectionView. La collectionView est sur un ScrollView. Pour une raison quelconque, je ne suis pas capable de cliquer sur le bouton. J'ai vérifié que tous mes éléments ont une interaction utilisateur activée.
Voici ma mise en page de la collection (j'ai caché des données sensibles) p>
voici ma cellule de vue de la collection personnalisée: p> J'ai un fichier XIB où une touche XIB L'événement intérieur d'un bouton a été connecté à l'ibaction ConnectButton. P> et dans mon mode de vue: p> Voici ma fonction de vue de la collection: P> func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCollectionViewCell
let user = users.values[indexPath.row]
cell.populate(user)
cell.onConnectTap = { (cell) in
//do something
}
return cell
}
3 Réponses :
Après avoir cherché à l'ensemble de la bande, j'ai enfin trouvé la solution qui était dans le commentaire de cette réponse: HTTPS: // Stackoverflow.com/a/44908916/406322
J'ai besoin d'ajouter ceci dans MyCollectionviewcell: P> Je pense que la sélection de la cellule détournait l'événement tactile. p> p>
super travaillé pour moi, après avoir essayé une journée entière cell.contentview.isuserInterActionAcédée = Faux et Public Func TextView (_ TextView: UitextView, Do URL: URL: URL, dans CaractèreRange: Nsrange) -> BOOL {IMPRESSION (URL) Retournez vrai}
Wow, c'est super obscur. Superbe retrouver!
Si cette solution a fonctionné pour vous, c'est probablement parce que dans myCollectionviewcell i> Vous n'ajoutez pas correctement votre bouton sous forme de sous-View (ou Sous-View d'une sous-vision) de contentview code>; Vous pouvez ajouter votre bouton à la vue code> code> à la place. Donc, la solution - au lieu d'interactions désactivées sur
contentview code>, vous devez ajouter un bouton au
contenu code> au lieu de la vue
code>.
Je suis confronté au même problème et j'ai trouvé la meilleure solution après avoir passé beaucoup de temps.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCollectionViewCell cell.contentView.isUserInteractionEnabled = false return cell }
Veuillez vérifier quelle vue ou touche que vous voulez cliquer sur Assurez-vous que UserPortAction est activée ou non @Chandni
Est
ConnectButton code> non appelé non plus? L'avez-vous accroché correctement dans le constructeur d'interface?
Ça n'est pas appelé, et oui, j'ai vérifié que c'est branché correctement dans IB.
Créer une méthode de déléguée de bouton
Vous devriez essayer de définir votre vision de collection et son attribut Clipstobounds Clipstobounds de Scroll Parent sur
True code>. Étant donné que votre vue de collection est dans une vue de défilement, le dimensionnement de la vue de défilement peut être difficile et peut-être que vous pouvez voir la cellule, mais les vues parent n'ont pas la tailles de droite, qui gâchent la chaîne de réponse.
@ DirtyHenry Les deux ont déjà déjà clip aux limites définies sur TRUE dans IB.
@Prabhu et avez-vous vérifié que la tailles de la trame / du contenu des vues des deux parents était ok?
Oui ils semblent aller bien