Was wird aufgerufen, wenn sich ein UISlider-Wert ändert?

71

Bekommt ein Verfahren , wenn ein namens UISlider‚s valueändert? Ich möchte einen Wert basierend auf dem UISlidersWert aktualisieren können, aber nur, wenn er sich ändert ...

Vielen Dank für jede Hilfe.

Michael
quelle

Antworten:

172

In IB, können Sie einen Haken IBActionan dem Value Changed eventoder in Code Add Ziel / Aktion für UIControlEventValueChanged. Zum Beispiel:

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

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

Beachten Sie, dass , wenn Sie die Wertänderungsereignisse wollen , wenn der Benutzer ist sliding, dann sicher sein , dass die slider‚s continuous propertyauch gesetzt ist. Wenn Sie jedoch nicht möchten, dass das Ereignis so slidingausgelöst wird, wie es der Benutzer ist, und erst dann, wenn das Gleiten beendet ist, setzen Sie fortlaufend auf NEIN (oder deaktivieren Sie in IB).

Sam Spencer
quelle
7

Für 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
}
Kevin ABRIOUX
quelle
0
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];

}
Acharya Ronak
quelle
1
Hallo Acharya, willkommen bei SO und danke für deine Antwort. Können Sie bitte Ihre Antwort bearbeiten, um zu beschreiben, wie dies das Problem des OP löst? Von Nur-Code-Antworten wird hier abgeraten. Vielen Dank!
Tim Malone