10

Does UITextField ignore the inputDelegate? Using the following code:

- (void)viewDidLoad
{
    [super viewDidLoad];

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

I get the following output:

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)

It runs just fine, without warning or exception, and the delegate property works just fine. But setting the inputDelegate causes no change and the delegate methods are not called.

Cœur
  • 37,241
  • 25
  • 195
  • 267
David Beck
  • 10,099
  • 5
  • 51
  • 88
  • Have you declared the VC as a ? I imagine you would have, or else seen a compiler warning. – danh Mar 27 '12 at 05:33
  • Hmm. I just tried it in a random view controller, even with the protocol warning, and my code - duplicate of yours - worked fine. – danh Mar 27 '12 at 05:39

2 Answers2

0

I have the same problem as you are facing. upon deep searching i found out that, though UITextInput Protocol was there in iOS 3.2 but UITextView/Field didn't make use of that protocol before iOS 5. Run your code in iOS 5 or later and it should work.

Ankit
  • 1,684
  • 14
  • 14
0

Set your delegate after the editing session has begun.

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

    return YES;

}
Mike Critchley
  • 1,643
  • 15
  • 20