1

Now, when I move the slider, the value of my textfield is changing. I need to that worked backwards also, whet change textfield value, slider moves.

My code:

- (void)sliderChanged:(UISlider *)sender {

    self.slider.valueChangedHandler = ^(id sender) {
    self.aleField.text = [NSString stringWithFormat:@"%.f", [(UISlider *)sender value]];
};

}

EDIT

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   slider.value = [aleField.text floatValue];

    NSUInteger newLength = [aleField.text length] + [string length] - range.length;
    return (newLength > 2) ? NO : YES;

}
Pavel Kaljunen
  • 1,291
  • 2
  • 26
  • 53

2 Answers2

3

After creating your textfield, add:

[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

Then have the following method:

- (void)textFieldDidChange:(UITextField*)sender {
    //Assuming slider is a property
    slider.value = [sender.text floatValue];
}

I referenced https://stackoverflow.com/a/7010676/391040 and https://stackoverflow.com/a/4711136/391040.

Community
  • 1
  • 1
Eitan
  • 1,308
  • 3
  • 15
  • 32
2

To do it while typing, implement the text field delegate

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSCharacterSet *numberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:numberSet] componentsJoinedByString:@""];
    BOOL basicTest = [string isEqualToString:filtered];
    if (basicTest) {
        slider.value = [aleField.text floatValue];
    }
    return basicTest;
}

This will also allow you to let the user insert only numbers.

To reflect the value to your slider:

slider.value = [textField.text floatValue];
Basel
  • 2,368
  • 1
  • 16
  • 21