67 votes

UIView -- « interaction utilisateur activée » false sur le parent mais true sur l’enfant ?

Il semble que userInteractionEnabled=NO sur une vue parent empêche l’interaction de l’utilisateur sur toutes les sous-vues. Est-ce exact? Y a-t-il un moyen de contourner ce problème?

46voto

lazycs Points 851

C’est exact, userInteractionEnabled défini sur NO sur une vue parent sera répercuté en cascade sur toutes les sous-vues. Si vous avez besoin que certaines sous-vues aient activé l’interaction, mais pas d’autres, vous pouvez séparer vos sous-vues en deux vues parentes : l’une avec userInteractionEnabled = YES et l’autre NO. Placez ensuite ces deux vues parentes dans la vue principale.

2voto

Alfi Points 997

J’ai inventé une solution bizarre pour cela, j’avais une vue enfant dans une cellule tableView que je voulais être touchable mais que le parent n’aurait pas dû avoir...

Aucune des solutions ci-dessus n’a fonctionné pour moi, mais j’ai trouvé une autre solution. Accédez au storyboard et ajoutez un tapGestureRecognizer à la vue parent pour absorber les touches de la vue parente. Problème résolu!

0voto

Beyaz Points 794

Voici la solution Créez une classe héritée de « UIView » et écrivez des func qui remplacent « point intérieur »

puis en storyboard ou xib, la supervue doit utiliser cette classe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X