отменить операцию перетаскивания на UISlider на основе значения ползунка - PullRequest
1 голос
/ 05 января 2011

У меня есть n ползунков на странице, представляющих процентные значения.очевидно, что процентное значение не должно превышать 100% для n ползунков.

, поэтому, если текущее значение n-1 ползунков равно 90, то при перетаскивании n-го ползунка я бычтобы остановить его на 10.

есть идеи?

1 Ответ

1 голос
/ 05 января 2011

В вашем методе действия, который вызывается для UIControlEventValueChanged, вычислите максимально допустимое значение для sender, а если его фактическое значение больше максимального, установите для sender.value максимально допустимое значение.

Edit: я только что попробовал этот подход с 2 ползунками, и он прекрасно работает. Это метод действия, который вызывается при обновлении любого из двух ползунков:

- (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;
    }
}
...