Evento de cambio de texto UITextField

Resuelto karim asked hace 54 años • 22 respuestas

¿Cómo puedo detectar cambios de texto en un campo de texto? El método delegado shouldChangeCharactersInRangefunciona para algo, pero no cumplió exactamente con mi necesidad. Dado que hasta que devuelva SÍ, los textos del campo de texto no están disponibles para otros métodos de observador.

por ejemplo, en mi código calculateAndUpdateTextFieldsno aparece el texto actualizado, el usuario ha escrito.

¿Hay alguna forma de obtener algo como textChangedel controlador de eventos de Java?

- (BOOL)textField:(UITextField *)textField 
            shouldChangeCharactersInRange:(NSRange)range 
            replacementString:(NSString *)string 
{
    if (textField.tag == kTextFieldTagSubtotal 
        || textField.tag == kTextFieldTagSubtotalDecimal
        || textField.tag == kTextFieldTagShipping
        || textField.tag == kTextFieldTagShippingDecimal) 
    {
        [self calculateAndUpdateTextFields];

    }

    return YES;
}
karim avatar Jan 01 '70 08:01 karim
Aceptado

De la forma correcta de realizar la devolución de llamada de cambio de texto de uitextfield :

Capto los caracteres enviados a un control UITextField algo como esto:

// Add a "textFieldDidChange" notification method to the text field control.

En Objective-C:

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

En rápido:

textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)

Luego, en el textFieldDidChangemétodo, puede examinar el contenido del campo de texto y recargar la vista de tabla según sea necesario.

Podrías usar eso y ponercalculAndUpdateTextFields como tu selector.

Daniel G. Wilson avatar Aug 10 '2011 12:08 Daniel G. Wilson

La respuesta de XenElement es acertada.

Lo anterior también se puede hacer en el generador de interfaces haciendo clic derecho en UITextField y arrastrando el evento de envío "Edición modificada" a su unidad de subclase.

Evento de cambio UITextField

William T. avatar Dec 05 '2012 17:12 William T.

para configurar el detector de eventos:

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

para escuchar realmente:

- (void)textFieldDidChange:(UITextField *)textField {
    NSLog(@"text changed: %@", textField.text);
}
asdf avatar Jun 06 '2013 08:06 asdf