In my application i have one UILabel
and UITextField
. Initially UILabel
text in nil.
As soon as user enter some text in UITextField
my UILabel
text also Update.
Let say When user enter A in UITextField
my UILabel
immediately show A, B in UITextField
my UILabel
show B and so on.
To achieve this behaviour i used the shouldChangeCharactersInRange
function of UITextFieldDelegate
. But it always behind one character. say UITextField
text = qwerty my UIlabel
text show qwert
Please help me so i can continuously update the UILabel
text as user enter value in UITextField
here is my code
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
mylabel.text = textfield.text
return true
}
You can register your textField for value change event:
[textField addTarget: self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged];
and in textFieldDidChange
function update your label:
- (void)textFieldDidChange
{
label.text = textField.text;
}
The function shouldChangeCharactersInRange
is needed more for taking desisions whether to allow upcoming change or not
You can use following code to change the text:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
myLabel.text = [textField.text stringByReplacingCharactersInRange:range withString:string]
return YES;
}
In Swift
Register your edit events
textfield.addTarget(self, action:"changeLabel", forControlEvents:UIControlEvents.EditingChanged)
func changeLabel(){
myLabel.text=textfield.text
}
you can use this code easy to understand :
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *str = [NSString stringWithFormat:@"%@%@",yourtextfield.text,string];
NSLog(@"%@",str);
return YES;
}