continueTracking n'est pas appelé

busterTheobusterTheo Membre
mars 2019 modifié dans API UIKit #1

Bonjour, pour faire bref :

  • j'ai un slider perso dans le viewController :
let sliderSoftZoom = CustomSliderSoftZoom(frame: CGRect(x: x, y:x, width: width, height: 10))

Avec la classe associée :

class CustomSliderSoftZoom: UISlider { .. }
  • Puis toujours dans le viewController :
sliderSoftZoom.addTarget(self, action: #selector(OrientationViewController.sliderSoftZoomAction(_:)), for: .valueChanged)
@objc func sliderSoftZoomAction(_ sender: CustomSliderSoftZoom!) { ... }

Dans la classe CustomSliderSoftZoom, j'ai beginTracking, endTracking et continueTracking
Seul le beginTracking est appelé

Comment activer le continueTracking ?
Où est mon erreur ?
Cela fait 2 jours que j'essaie plein de trucs (recognizer, touch, UISlider, Custom Slider, ...)

Si quelqu'un a une idée géniale, je suis preneur, parce que sur le web "swift continueTracking is not called" ne m'aide pas plus que ça.

Merci d'avance.

Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur

    Je viens de faire un petit projet.

    class CustomSliderSoftZoom : UISlider
    {
      override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool
      {
        print("begin tracking")
    
        return super.beginTracking(touch, with: event)
      }
    
      override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool
      {
        print("continue tracking")
    
        return super.continueTracking(touch, with: event)
      }
    
      override func endTracking(_ touch: UITouch?, with event: UIEvent?)
      {
        print("end tracking")
    
        super.endTracking(touch, with: event)
      }
    }
    

    Les résultats du déplacement du slider:

    begin tracking
    continue tracking
    continue tracking
    continue tracking
    continue tracking
    continue tracking
    end tracking
    

    Mais je me demandais pourquoi tu déclares le slider comme:

    let sliderSoftZoom = CustomSliderSoftZoom(frame: CGRect(x: x, y:x, width: width, height: 10))
    

    Normalement, j'attendrais:

    @IBOutlet weak var sliderSoftZoom: CustomSliderSoftZoom!
    

    Et le slider serait positionné dans le storyboard.

  • Merci pour vos réponses rapides.
    Le plan de devulder semble me convenir...
    Johanna Carter, pour le slider pas dans le storyBoard, c'est parce qu'il est question de le faire apparaître ou pas en fonction du processus (interface avec plusieurs outils)

  • J'ai réussi à faire tout ce que je désirai avec le lien de devulder.
    Je suis enfin parvenu à mixer plusieurs actions et plusieurs outils associés, pour modifier la rotation, l'agrandissement, le déplacement latéral et l'opacité, tout ça en même temps sur le même écran.

    Cela semble certainement évident pour la plupart des barmans, mais je n'y croyais plus. J'étais vraiment désespéré. Perte de confiance. Et là, le truc, il réagit au px (et conversions en mm) près.
    Cela m'encourage pour la suite.

    Encore merci pour la réactivité...

    Si quelqu'un est aussi nul que moi, je peux partager du code....

  • Je ne vois pas où mettre "Résolu" !

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