Comportement UISlider dans iOS7 par rapport à iOS6

J'ai remarqué que UISlider dans iOS7 se comporte différemment que dans iOS 6 et iOS 5:

Disons que vous avez un slider avec min = 0 et max = 10, la valeur actuelle est 0. Lorsque vous appuyez d'abord sur le "button", un message valueChanged est envoyé avec slider.value = 0.269 (au lieu du 0 attendu) et le button se déplace vers le milieu. Généralement, en touchant le slider, vous le déplacez vers la valeur du milieu (5 dans cet exemple), plus il est éloigné du milieu, plus il bouge.

Tout cela n'est pas arrivé dans iOS6, et je voudrais restaurer l'ancien comportement, mais je ne sais pas comment y parvenir.

Apple n'a pas encore commenté mon rapport de bogue, mais j'ai trouvé une solution plus ou less accidentelle: l'installation d'une image personnalisée pour le button restaure le comportement d'iOS 6:

[self.slider setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal]; 

Sur iOS 9, vous devez définir les états .Normal, .Selected et .Highlighted pour fonctionner. Je l'ai trouvé après 5h de lutte. Way to go Apple!

 [_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal]; [_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateSelected]; [_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateHighlighted]; 

Je l'ai testé et je peux confirmer le comportement décrit.

Fait intéressant, lorsque l'application est construite en utilisant le SDK iOS 6, mais l'appareil / simulateur fonctionne encore iOS 7 (en mode de compatibilité), le bug ne se produit pas. Donc, il semble que cela soit lié au nouveau look.

Déposer un bug