7

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

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

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

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

4

3 回答 3

13

您应该首先确保不断发送更新事件:

mySlider.continuous = YES;

您也可以在故事板/笔尖中执行此操作(正如@fDmitry 所提到的,这是 IB 中的默认状态)。

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

-(IBAction)sliderValueChanged:(id)sender;

以这种方式实现它:

- (IBAction)sliderValueChanged:(id)sender {

    float maxValue = 50.0f;

    if ([(UISlider*)sender value] > maxValue) {
        [(UISlider*)sender setValue:maxValue];
    }
}
于 2013-04-24T12:40:59.523 回答
2

将您的滑块连接到valueChanged:行动。你应该像这样实现它:

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

  if(slider.value < myMinValue)
  {
    slider.value = myMinValue;
  }
}
于 2013-04-24T12:41:05.983 回答
2

这个其实很简单:)

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

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

于 2013-04-24T12:39:14.717 回答