Répondre à la discussion

Bonsoir,


J'ai un petit souci, j'essaie de détecter plusieurs doigts sur l'écran et ajouter un petit cercle autour d'eux.

Le code fonctionne bien pour un doigt mais lorsque que j'ajoute un doigt supplémentaire, le cercle disparait du premier pour aller sur le second..

J'aimerais que chaque doigt détecté ait son propre cercle,

Quelqu'un aurait une idée ?


Merci d'avance,




[CODE]import UIKit


    class ViewController: UIViewController {


        @IBOutlet weak var ui_monLabel: UILabel!

       

        var nbTouchs = 0

        var touchViews = [UITouch:UIImageView]()


        override func viewDidLoad() {

            super.viewDidLoad()

            self.view.isUserInteractionEnabled = true

            actualiserInterface()

        }

       

        // Actualisation Interface

        // Centralisation de toutes les mises à jour

        // de l'écran dans une seule fonction

        // N'existe pas avec SwiftUI, qui s'en charge automatiquement

        func actualiserInterface() {

            ui_monLabel.text = String(nbTouchs)

        }

       

        //

        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

            for touch in touches {

                nbTouchs += 1

                createViewForTouch(touch: touch)

            }

            actualiserInterface()

        }

       

        override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

            for touch in touches {

                nbTouchs -= 1

                removeViewForTouch(touch: touch)

            }

            actualiserInterface()

        }

       

        //

        func createViewForTouch( touch : UITouch ) {

            // Création UIImageView

            let imageView = UIImageView()

            imageView.image = UIImage(systemName: "bolt.circle.fill")

            imageView.frame.size = CGSize(width: 100, height: 100)

            // On place l'imageView à la position du Touch

            imageView.center = touch.location(in: self.view)

            // On pose l'imageView sur la surface de travail

            self.view.addSubview(imageView)

            // Sauvegarde Touch dans le dictionnaire

            touchViews[touch] = imageView

        }

           

        func removeViewForTouch (touch : UITouch ) {

            // Recherche de la vue correspondante au Touch

            if let view = touchViews[touch] {

                // Destruction de la vue

                view.removeFromSuperview()

                // On efface la référence de l'évenement Touch

                // dans le dictionnaire

                touchViews.removeValue(forKey: touch)

            }

        }

       

    }[/CODE]