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)
Он работает отлично, без предупреждения или исключения, и свойство delegate работает нормально. Но установка inputDelegate не вызывает никаких изменений, и методы делегата не вызываются.
Ответы
Ответ 1
У меня та же проблема, с которой вы сталкиваетесь.
при глубоком поиске я узнал, что хотя UITextInput Protocol был в iOS 3.2, но UITextView/Field не использовал этот протокол до iOS 5.
Запустите свой код в iOS 5 или более поздней версии, и он должен работать.
Ответ 2
Установите делегат после начала сеанса редактирования.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
[self.myTextfield setInputDelegate:self];
NSLog(@"Inputdelegate is: %@", self.myTextField.inputDelegate);
return YES;
}