如何识别 UISlider 的运动是从最大值到最小值,反之亦然?
Posted
技术标签:
【中文标题】如何识别 UISlider 的运动是从最大值到最小值,反之亦然?【英文标题】:How to recognize the movement of the UISlider is from maximum to its minimum value and its Vice Versa? 【发布时间】:2014-06-24 11:56:41 【问题描述】:我想知道如何识别 UISlider 正在从最大值跟踪到最小值? 例如,我的滑块最大值和最小值 1.0 和 0.0。如何识别我的滑块从 0.0 跟踪到 1.0,反之亦然?
谢谢!
【问题讨论】:
【参考方案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
【讨论】:
好的,但是我想要一组函数在我从最大值跟踪到最小值时执行,另一组函数从最小值到最大值执行?我该怎么做?请指教?以上是关于如何识别 UISlider 的运动是从最大值到最小值,反之亦然?的主要内容,如果未能解决你的问题,请参考以下文章