UITapGestureRecognizer sur une partie d'une view

Bonsoir à  tous,


 


J'ai une view qui fait 50 de largeur et 30 de hauteur,


je souhaiterais savoir comment ajouter 2 actions différentes sur cette même vue,


par exemple une action si le tap est dans la première moitié de la vue (entre 0 et 25) et une seconde action si le tap est dans la deuxième moitié (entre 26 et 50).


Merci ! 


Réponses

  • Tu peux récupérer la position du tap dans la vue, non ? Ensuite tu fais juste un test sur sa valeur.

  • Merci !


    effectivement avec 



    let point = tapGestureRecognizer.location(in: self.view)

    je récupère la valeur de point.x


  • DrakenDraken Membre
    janvier 2017 modifié #5

    N'oublie pas de tester la position par rapport à  la taille réelle de la vue et non avec les "valeurs magiques" 50 et 30. Comme ça, la détection continuera de fonctionner, même en changeant la présentation de ton application, avec une view de taille différente.



    let point = tapGestureRecognizer.location(in: self.view)
    if point < self.view.frame.size.height * 0.5 {
    print ("Partie inférieure")
    } else {
    print ("Partie supérieure")
    }

    Oups, j'ai mal lu la description initiale. J'ai testé sur la hauteur et non la largeur. Petite correction :



    let point = tapGestureRecognizer.location(in: self.view)
    if point < self.view.frame.size.width * 0.5 {
    print ("Partie inférieure")
    } else {
    print ("Partie supérieure")
    }
  • Joanna CarterJoanna Carter Membre, Modérateur

    Ou, mieux ?



    let bounds = self.view.bounds

    let leftRect = CGRect(origin: bounds.origin, size: CGSize(width: bounds.width / 2, height: bounds.height))

    if leftRect.contains(point)
    {
    // partie gauche
    }
    else
    {
    // partie droite
    }
  • Merci à  tous les 2 !


Connectez-vous ou Inscrivez-vous pour répondre.