Je n’ai pas eu beaucoup de temps pour penser à toi. Désolé, je suis complément surbooké en ces moments de crise.
Ton problème est plus compliqué qu’il n’y parait, à cause de l’imperfection des êtres humains. iOS ne permet pas de connaître à un moment donné le nombre de doigts touchant l’écran. La seule chose qu’il sache faire c’est d’avertir l’application qu’un contact vient d’avoir lieu.
Prenons un cas simple avec deux utilisateurs. Il est QUASI-IMPOSSIBLE qu’ils touchent l’écran au même moment, même avec des réflexes de-la-mort-qui-tue. Il y aura toujours un petit décalage, de quelques fractions de secondes.
Lorsque l’utilisateur A touche l’écran, iOS détecte l’événement et prévient l’application en appelant la fonction movesBegan (UIKIT ou SwiftUI).
Une fraction de seconde plus tard, quand l’utilisateur B touche l’écran, iOS appelle de nouveau la fonction movesBegan pour prévenir l’application. C’est un AUTRE événement de contact.
Le code que tu as trouvé est assez complexe, à ton niveau d’apprentissage. Je doute que tu comprennes grand chose sur son fonctionnement (mais ça viendra !).
En gros, chaque fois qu’un utilisateur pose le doigt sur l’écran, l’information est mémorisée dans un système de stockage de données que l’on appelle un dictionnaire. Si le doigt quitte l’écran, iOS prévient l’application par l’intermédiaire de la fonction touchesEnded, qui fait disparaître l’image de l’écran, et efface l’information du dictionnaire.
Avec ce code, pour connaître le nombre de doigts sur l’écran, à un moment donné, il suffit de consulter le dictionnaire pour lui demander combien d’éléments il contient. Un truc du genre :
let nbDoigtsActifs = touchView.count
Simple, non ? Sauf que tout ceci est en UIKIT et pas en SwiftUI.
Je te porte ça en SwiftUI ce WE, si j’ai le courage (semaine très chargée, vraiment …).
Autre problème, la gestion du temps. Dans la mesure où les actions des utilisateurs ne sont pas simultanées, il faut prévoir un court délai d’attente avant de valider le nombre de doigts en contact. Et un signal de démarrage (visuel ou sonore) pour donner le top départ aux utilisateurs. Genre « Vous avez une seconde pour poser vos doigts sur l’écran ».
Ton application doit donc activer et désactiver la détection des contacts et gérer le temps. Le mot clé pour ça est : Timer !! Encore quelque chose de nouveau à apprendre …