Как установить интервал времени для UISlider 0.02 - PullRequest
0 голосов
/ 20 сентября 2011

Мне нужно установить временной интервал 0,02 для UISlider и в методе valueChanged мне нужно отразить что-то, когда значение ползунка точно изменится на 0,02. Как 0,02, 0,04,0.08 ....

Ответы [ 4 ]

0 голосов
/ 26 сентября 2011

У меня есть положительные и отрицательные значения в слайдере.Так что все вышеперечисленные ответы мне не пригодятся.Даже я не могу сравнить разницу между старым и новым значением слайдера с ==.Так что это еще одна проблема.

Это мой рабочий код.

float incDecTempoVal=0.02;
float val_tempo=[[NSString stringWithFormat:@"%.02f",sliderBMP.value] floatValue];

if (sliderBMP.value<0.0) 
    sliderBMP.value=sliderBMP.value-(incDecTempoVal-fabs(fmod(val_tempo,incDecTempoVal)));

else 
    sliderBMP.value=sliderBMP.value+(incDecTempoVal-fabs(fmod(val_tempo, incDecTempoVal)));
0 голосов
/ 20 сентября 2011

Чтобы получить дискретные значения в UISlider, вам нужно обработать эту логику в вашем методе valueChanged.Например,

-(void)valueChanged:(UISlider *)slider {
   NSInteger value = (NSInteger) (slider.value+0.005)*100;
   value = (value/2) * 2;  //round down if necessary
   [slider setValue:value/100.0 animated:NO];
}

Чтобы прочитать скорректированное значение, если оно вам нужно, это будет value/100.0.
Примечание: возможно, вам нужно установить свойство continuous ползунка на NO,

0 голосов
/ 20 сентября 2011

Я понимаю, что вы хотите знать, когда значение UISlider увеличивается / уменьшается ровно на 0,02, поэтому:

Я думаю, вам нужно сохранить последнее значение вашего UISlider.

-(IBAction)valueChanged:(id)sender {
     UISlider * slider = (UISlider *) sender;
     //using fabs() because maybe value decreased
     if (fabs(slider.value - lastValue) == 0.02 ) 
     {
         //Your code here
     }
     lastVaule = slider.value;
}
0 голосов
/ 20 сентября 2011

Просто сделайте что-то вроде


-(IBAction)valueChanged:(id)sender
{
    if (sender.value == 2)
    {
        //do something here 

    }
}

Редактировать:

Я только что понял, что сравнение поплавков - это просто боль в c и цель-c.Поэтому на вашем месте я бы использовал int (2) вместо float (0,02) и приводил бы int к float, когда вам это нужно для расчета.

...