2013-11-26 4 views
0

У меня есть в текстовом поле TableViewCell 2 TextFields.UITextField для ввода

Для второго текстового поля мне нужно подтвердить, чтобы включить кнопку.

I'm с помощью этого кода, чтобы определить, если кнопка подтверждения должна быть включена, но она не работает:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    textField = self.installDeviceCell.passWordTextFieldOutlet; 
    [textField addTarget:selfaction:@selector(checkTextField:)forControlEvents:UIControlEventEditingChanged]; 
    return YES; 
} 

-(void)checkTextField:(id)sender 
{ 
    UITextField* textField = (UITextField*)sender; 
    if ([textField.text length] < 7) { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO; 
    }else if ([textField.text length] > 7){ 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    }else{ 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    } 
} 
+0

вы установить делегат текстовое поле? [textField setDelegate: self] –

ответ

0

назначенную вам ваши UITextFieldDelegate для вашего UITextField при его instatiated? Если не назначить его, методы делегата для UITextField не будут вызываться.

Также убедитесь, что в файле заголовка делегата указан делегат интерфейса, например.

@interface MyDelegate <UITextFieldDelegate> 
// ... 
@end 

Наконец-то вы делаете свои расчеты текста несколько странно. Вы можете делать все ваши вычисления witin shouldChangeCharactersInRange. Вам также не нужно добавлять цель или перезаписывать свойство textField. Просто проверьте, превышает ли replacementString более 7 символов. Ваш окончательный код может выглядеть примерно так:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if ([string length] < 7) { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO; 
    } else { 
     self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES; 
    } 
    return YES; 
} 

Посмотреть этот большой ответ на делегации для получения дополнительной информации: https://stackoverflow.com/a/626946/740474

+0

Да, UITextFieldDelegate инстанцируется – Andy

+0

В этом случае это, вероятно, проблема с вашими вычислениями. См. Мой отредактированный ответ для более подробной информации. Также попробуйте пройти через отладчик, когда запущен метод 'textField: shouldChangeCharactersInRange: replacementString: delegate' и убедитесь, что он ведет себя как ожидалось (или вообще вызван) – alexgophermix