J'ai un problème qui a été mise sur écoute-moi pour la dernière journée et je ne peux pas comprendre la solution ...UISlider ne gère pas correctement l'événement .touchUpInside
J'ai un UISlider
, qui va de valeurs 1 à 3 (c'est comme ça que nous en avons besoin). Le curseur est continu, car il met à jour certaines propriétés en fonction de sa valeur actuelle. Maintenant, je veux implémenter une fonction où le curseur déclenche des actions en fonction du moment où l'utilisateur commence à le toucher, ou termine le contact.
J'ai essayé d'utiliser la méthode .touchDown
pour détecter le début des touches, qui fonctionne parfaitement. Cependant lorsque j'essaie d'utiliser .touchUpInside
et .touchUpOutside
pour détecter quand l'utilisateur soulève son doigt, l'événement ne se déclenche pas au moment approprié.
Quand je fais glisser mon doigt autour du curseur, une certaine distance de son point de départ, l'événement se déclenche. Mais quand je touche juste brièvement ou déplacer autour d'une petite quantité, l'événement touchup ne se déclenche pas du tout ...
que quelqu'un peut me aider? Voici le code que je utilise pour mettre en place mon curseur:
let slider: UISlider = {
let slider = UISlider()
slider.isContinuous = true
slider.minimumValue = 1
slider.maximumValue = 3
slider.setMinimumTrackImage(#imageLiteral(resourceName: "minimumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal)
slider.setMaximumTrackImage(#imageLiteral(resourceName: "maximumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal)
let sliderThumb = #imageLiteral(resourceName: "sliderThumbImage")
slider.setThumbImage(sliderThumb, for: .normal)
slider.addTarget(self, action: #selector(adjustPriceLabel), for: .valueChanged)
slider.addTarget(self, action: #selector(handleTouchDown), for: .touchDown)
slider.addTarget(self, action: #selector(handleTouchUp), for: [.touchUpInside, .touchUpOutside])
slider.setValue(2.0, animated: true)
return slider
}()
@objc fileprivate func handleTouchDown() {
print(1234)
}
@objc fileprivate func handleTouchUp() {
print(5678)
}
Alors ce que vous dites est que vous voir 'handleTouchDown()' être appelé et parfois 'handleTouchUp()' ne serait pas appelé ou? – Ladislav
Exactement. Plus spécifiquement handleTouchUp() n'est appelé que lorsque je déplace le curseur à une certaine distance de sa position de départ ... –
Pouvez-vous essayer de supprimer 'setMinimumTrackImage',' setMaximumTrackImage' et 'setThumbImage' et de tester à nouveau pour voir si vos images de pouce personnalisées sont à blâmer? – Ladislav