2012-03-27 2 views
10

Does UITextField игнорирует inputDelegate? Используя следующий код:UITextField игнорирует inputDelegate‽

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

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

я получаю следующий результат:

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) 

Он работает просто отлично, без предупреждения или исключения, и свойство делегата работает просто отлично. Но установка inputDelegate не вызывает никаких изменений, и методы делегата не вызываются.

+0

Вы объявили VC как ? Я предполагаю, что вы бы это сделали или видели предупреждение компилятора. – danh

+0

Хм. Я просто попробовал это в контроллере произвольного представления, даже с предупреждением протокола, а мой код - ваш дубликат - отлично работал. – danh

ответ

0

У меня такая же проблема, как и вы. при глубоком поиске я узнал, что хотя UITextInput Protocol был в iOS 3.2, но UITextView/Field не использовал этот протокол до iOS 5. Запустите свой код в iOS 5 или более поздней версии, и он должен работать.

0

Установить делегат после начался сеанс редактирования.

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

    return YES; 

}