UITextField "value changed" no se dispara cuando se actualiza el campo

Tengo una IBAction que he conectado a un elemento UITextField en Interface Builder. (Disparo en el evento "valor cambiado")

También tengo un UISlider que actualiza el elemento TextField automáticamente cuando se ajusta el valor.

Cuando ejecuto mi aplicación, el TextField se actualiza cuando ajuste el control deslizante, pero el evento "value changed" no se activa cuando esto sucede. El evento de valor cambiado también no se activa cuando edito TextField a mano también. (Aunque usar el activador Did Editing End hace que se dispare).

Mi pregunta es, ¿cómo puedo hacer que el valor cambie el desencadenante para disparar tanto para una actualización programática del TextField como para cuando el usuario ajusta el valor.

Como sugiere TheRonin, use UITextFieldDelegate e implemente el siguiente método

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

No utilice UIControlEventValueChanged para UITextField . Lo que quieres es UIControlEventEditingChanged .

Para get el EditingChanged textfield event , sugerí agregar selector como

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

Cuando el valor del campo de text cambió, el valor cambiado que obtendrá de este textChanged: selector.

 -(void)textChanged:(UITextField *)textField { NSLog(@"textfield data %@ ",textField.text); } 

Si está asignando un delegado al campo de text, entonces tenga en count que (cuando devuelva NO del método delegado a continuación, el evento (Edición modificada) no se activará. Considere invocar al detector de events cuando devuelva NO de este método

 (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

Para Swift 3 :

 textField.addTarget(self, action: #selector(textChanged), for: .valueChanged) func textChanged() { .... }