Why UITextField becomeFirstResponder returns NO?

user1654889 picture user1654889 · Feb 5, 2014 · Viewed 8.5k times · Source

This is my code:

while (true) {
    if ([identificationField becomeFirstResponder]) {

        NSLog(@"finally!");
        break;
    }
    else{
        if ([identificationField canBecomeFirstResponder]) {
            NSLog(@"can");
        }
        else{
            NSLog(@"cannot");
        }
        NSLog(@"%@", identificationField);
        NSLog(@"dadgum!!");

    }
}

This is what it logs:

   2014-02-05 11:33:54.253 Store Test[22488:70b] can

   2014-02-05 11:33:54.254 Store Test[22488:70b] <UITextField:
   0xb5c89a0; frame = (10 1; 300 43); text = ''; clipsToBounds = YES;
   opaque = NO; autoresize = TM+BM; gestureRecognizers = <NSArray:
   0xb5cc7b0>; layer = <CALayer: 0xb5c8b40>>

   2014-02-05 11:33:54.254 Store Test[22488:70b] dadgum!!

Does anyone know why it might do that? As you can see, the text field can become the first responder, it just won't.

Answer

aironik picture aironik · Oct 18, 2014

Is your identificationField in UIView hierarchy? If it hasn't added into window and shown it cannot became first responder.