2011-01-05 3 views

Répondre

1

Dans votre méthode d'action appelée UIControlEventValueChanged, calculez la valeur maximale autorisée pour sender et, si sa valeur réelle est supérieure au maximum, définissez sender.value sur la valeur maximale autorisée. Edit: Je viens d'essayer cette approche avec 2 curseurs et ça marche super bien. Ceci est la méthode d'action qui est appelée lorsque l'un des deux curseurs est mise à jour:

- (IBAction)sliderValueChanged:(id)sender 
{ 
    UISlider *currentSlider = (UISlider *)sender; 
    UISlider *otherSlider = currentSlider == self.slider1 ? self.slider2 : self.slider1; 

    static float maxSum = 100.0f; 
    float currentSum = currentSlider.value + otherSlider.value; 

    if (currentSum > maxSum) { 
     currentSlider.value = maxSum - otherSlider.value; 
    } 
} 
+0

ouais - je l'ai essayé, mais cela, mais la traînée arrive encore, et la valeur et faites glisser l'emplacement sortir de synchronisation. J'ai une étiquette que je mets à jour avec la valeur en pourcentage, et cette étiquette montre 100, tandis que le curseur est bloqué à 80 –

+0

Non, vous avez tort. Je l'ai juste essayé et ça fonctionne parfaitement. Voir ma modification ci-dessus. Bien sûr, les curseurs doivent être mis à jour en continu. –

+0

Merci Ole! juste ce dont j'avais besoin ... – amergin

Questions connexes