【问题标题】:How to recognize the movement of the UISlider is from maximum to its minimum value and its Vice Versa?如何识别 UISlider 的运动是从最大值到最小值,反之亦然?
【发布时间】:2014-06-24 11:56:41
【问题描述】:

我想知道如何识别 UISlider 正在从最大值跟踪到最小值? 例如,我的滑块最大值和最小值 1.0 和 0.0。如何识别我的滑块从 0.0 跟踪到 1.0,反之亦然?

谢谢!

【问题讨论】:

    标签: ios iphone objective-c uislider


    【解决方案1】:

    有一个 UISlider 命名值改变的事件。使用该事件并计算差异。如果差异为正,则其趋向最大值,否则趋向最小值。使用下面的操作方法。

    - (IBAction)sliderdidchanged:(UISlider *)sender {
        if (sliderOldValue - sender.value > 0) {
          NSLog(@"Value Decreasing");
        }
        else {
         NSLog(@"Value Increasing");
        }
        sliderOldValue = sender.value;
    }
    

    不要忘记在您的 xib 或 Storyboard 中的 UISlider 对象中引用此方法。还要将 sliderOldValue 声明为实例变量,并在 viewDidLoad 中将其值分配给滑块的默认值。

    【讨论】:

    • 谢谢,可以举例说明吗?
    【解决方案2】:

    .h

    跟踪最后一个值

    @property(nonatomic,assign)    float lastValue;
    

    .m

    在 ViewDidLoad 中监听 UIControlEventValueChanged

    [yourSlider addTarget:self
                    action:@selector(mySliderValueChanged:)
          forControlEvents:UIControlEventValueChanged];
    

    定义方法

    - (IBAction)mySliderValueChanged:(UISlider *)sender {
    
        float currentValue = sender.value;
    
        if (currentValue>self.lastValue) {
    
            NSLog(@"moving Right");
        }
        else{
    
            NSLog(@"moving Left");
        }
    
        self.lastValue = sender.value;
    }
    

    【讨论】:

    • 它的工作,我的问题是,考虑我将我的滑块从 1.0 移动到 0.0,这意味着我正在传递值 0.9、.0.8、...、0.0,现在我将它从 0.0 移动到 1.0这意味着我传递了 0.0、0.2、...0.9、1.0,两个动作中的值相同,我该如何区分它?
    【解决方案3】:

    可以监听ValueChanged控件事件

    [slider_ addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
    
    ...
    
    - (void) sliderMove:(UISlider*)slider
    {
        if (slider.value == slider.minimumValue) {
            // etc...
        }
        else if (slider.value == slider.maximumValue) {
            // so on and so forth
        }
    }
    

    【讨论】:

    • 好的,但是我想要一组函数在我从最大值跟踪到最小值时执行,另一组函数从最小值到最大值执行?我该怎么做?请指教?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2013-09-21
    • 2011-09-03
    • 2019-10-09
    相关资源
    最近更新 更多