限制滑动UISlider超过某一点

时间:2013-04-24 12:32:55

标签: ios objective-c xcode cocoa-touch uislider

我们假设有一个UISlider我设置了一个特定的值。然后滑块手柄移动到该值,如预期的那样。

现在我想让用户来回滑动滑块的手柄,但不要将UISlider的值设置为小于我以编程方式分配给它的值。

例如,我有一个UISlider,最小值为0,最大值为100,我将其值设置为50.我不希望用户滑动“lefter”而不是50在它的“右边”,我想让用户来回滑动手柄。

如何在Obj-C中实现这种行为?

3 个答案:

答案 0 :(得分:12)

您应首先确保连续发送更新事件:

mySlider.continuous = YES;

您也可以在storyboard / nib中执行此操作(如@fDmitry所述,这是IB中的默认状态)。

然后,您必须将滑块链接到.h文件中的IBAction(通过从IB拖动到您的代码来创建链接),并将其分配给滑块的“值已更改”事件。这将创建一个这样的方法:

-(IBAction)sliderValueChanged:(id)sender;

以这种方式实施:

- (IBAction)sliderValueChanged:(id)sender {

    float maxValue = 50.0f;

    if ([(UISlider*)sender value] > maxValue) {
        [(UISlider*)sender setValue:maxValue];
    }
}

答案 1 :(得分:2)

这个很容易,实际上:)

创建一个动作并将其指定为UISlider的valueChanged动作的选择器。在该方法中,执行简单的检查: 如果滑块的值小于50,请将其设置为50.

如果您需要任何进一步的帮助,我可以在课后写一些示例代码。希望它有所帮助!

答案 2 :(得分:2)

将滑块连接到valueChanged:操作。你应该实现类似的东西:

- (void)mySliderValueChanged:(UISlider *)slider
{
  CGFloat myMinValue = 50.0f; // should be a global variable

  if(slider.value < myMinValue)
  {
    slider.value = myMinValue;
  }
}