2011-09-20 34 views

回答

0

我在滑块中同时具有正值和负值。 所以以上所有答案对我来说都没有用。 即使我不能比较滑块的旧值和新值与==的区别。 所以这是另一个问题。

这是我的工作代码。

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

就做这样的事情

 

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

    } 
} 
 

编辑:

我刚刚意识到比较花车只是在C和Objective-C的痛苦。所以,如果我是你,我会使用一个int(2)而不是一个浮点数(0.02),并在你需要计算时将int转换为浮点数。

+0

这是行不通的。使用浮动很好。 – Mundi

0

要在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

我明白,你想知道什么时候的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; 
} 
相关问题