我需要将时间间隔设置为0.02到UISlider,并且在valueChanged方法中,当滑块的值精确变为0.02时,我需要反映一些东西。像0.02,0.04,0.08 ....
答案 0 :(得分:0)
做一些像
这样的事情
-(IBAction)valueChanged:(id)sender
{
if (sender.value == 2)
{
//do something here
}
}
修改强>
我刚才意识到比较花车只是c和客观c的痛苦。所以,如果我是你,我会使用int(2)而不是float(0.02),并在你需要计算时将int转换为浮点数。
答案 1 :(得分: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
。
答案 2 :(得分: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;
}
答案 3 :(得分: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)));