【发布时间】:2010-11-04 01:26:58
【问题描述】:
当UISlider 的value 发生变化时,是否会调用方法?我希望能够根据UISliders 值更新一个值,但仅限于它发生变化时。
【问题讨论】:
标签: objective-c uislider
当UISlider 的value 发生变化时,是否会调用方法?我希望能够根据UISliders 值更新一个值,但仅限于它发生变化时。
【问题讨论】:
标签: objective-c uislider
在 IB 中,您可以将 IBAction 连接到 Value Changed event 或在代码中为 UIControlEventValueChanged 添加目标/操作。例如:
[mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
- (IBAction)sliderValueChanged:(UISlider *)sender {
NSLog(@"slider value = %f", sender.value);
}
请注意,如果您希望用户是sliding 时的值更改事件,那么请确保还设置了slider 的continuous property。另一方面,如果您不希望事件触发,因为用户是 sliding 并且仅当他们完成滑动时,请将 Continuous 设置为 NO(或在 IB 中取消选中)。
【讨论】:
对于 Swift 3
//There is your slider
@IBOutlet weak var mSlider: UISlider!
//add a target on your slider on your viewDidLoad for example
self.mSlider.addTarget(self, action: #selector(MyClass.onLuminosityChange), for: UIControlEvents.valueChanged)
//callback called when value change
func onLuminosityChange(){
let value = self.mSlider.value
}
【讨论】:
ViewController.h
@property (strong, nonatomic) IBOutlet UIProgressView *prgs;
- (IBAction)slider:(id)sender;
@property (strong, nonatomic) IBOutlet UISlider *slider1;
@property (strong, nonatomic) IBOutlet UILabel *lbl;
ViewController.m
- (IBAction)slider:(id)sender
{
self.prgs.progress=self.slider1.value;
self.lbl.text = [NSString stringWithFormat:@"%f",
self.slider1.value];
}
【讨论】: