当 UISlider 值更改时调用什么?

UISlidervalue发生变化时,是否会调用某个方法?我希望能够更新一个值基于 UISliders值,但只有当它的变化。

61128 次浏览

In IB, you can hook up an IBAction to the Value Changed event or in code add target/action for UIControlEventValueChanged. For example:

[mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];


- (IBAction)sliderValueChanged:(UISlider *)sender {
NSLog(@"slider value = %f", sender.value);
}

Note that if you want the value change events as the user is sliding, then be sure that the slider's continuous property is also set. On the other hand, if you don't want the event to fire as the user is sliding and only when they finish sliding, set continuous to NO (or uncheck in IB).

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];


}

For 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
}