2012-03-27 17 views
10

¿UITextField ignora la entradaDelegate? Usando el siguiente código:UITextField ignorando la entradaDelegate‽

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.textField.inputDelegate = self; 
    NSLog(@"textField: %@", self.textField); 
    NSLog(@"delegate: %@", self.textField.inputDelegate); 
} 

me sale el siguiente resultado:

2012-03-26 20:43:49.560 InputTest[33617:f803] textField: <UITextField: 0x6c093a0; frame = (20 20; 280 31); text = ''; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x6c094d0>> 
2012-03-26 20:43:49.561 InputTest[33617:f803] delegate: (null) 

Se ejecuta muy bien, sin previo aviso o una excepción, y la propiedad delegado funciona bien. Pero al configurar InputDelegate no se produce ningún cambio y no se invocan los métodos de delegado.

+0

¿Ha declarado el VC como un ? Me imagino que lo habrías hecho, o si no has visto una advertencia del compilador. – danh

+0

Hmm. Acabo de probarlo en un controlador de vista aleatoria, incluso con la advertencia de protocolo, y mi código, duplicado tuyo, funcionó bien. – danh

Respuesta

0

Tengo el mismo problema que usted enfrenta. en una búsqueda profunda descubrí que, aunque UITextInput Protocol estaba allí en iOS 3.2 pero UITextView/Field no hizo uso de ese protocolo antes de iOS 5. Ejecute su código en iOS 5 o posterior y debería funcionar.

0

Configure su delegado después de la sesión de edición ha comenzado.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    [self.myTextfield setInputDelegate:self]; 
    NSLog(@"Inputdelegate is: %@", self.myTextField.inputDelegate); 

    return YES; 

}