Reputation: 1291
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;
}
Upvotes: 1
Views: 3682
Reputation: 2368
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];
Upvotes: 2
Reputation: 1348
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.
Upvotes: 3