Warum UITextField becomeFirstResponder gibt KEINE?
Dies ist mein code:
while (true) {
if ([identificationField becomeFirstResponder]) {
NSLog(@"finally!");
break;
}
else{
if ([identificationField canBecomeFirstResponder]) {
NSLog(@"can");
}
else{
NSLog(@"cannot");
}
NSLog(@"%@", identificationField);
NSLog(@"dadgum!!");
}
}
Dies ist, was es Protokolle:
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!!
Weiß jemand, warum könnte es tun? Wie Sie sehen können, kann das Textfeld werden die first responder, es will einfach nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist Ihre identificationField in UIView Hierarchie? Wenn es nicht in Fenster angezeigt und es können keine wurde ersten responder.
UITableView
oderUICollectionView
hält, dass textfield).Einen
UITextField
auch weigern zu werden first responder, wenn seineuserInteractionEnabled
Eigenschaft istNO
wie ich gerade entdeckt. Ich hatte explizit zu re-aktivieren Sie die Benutzer-Interaktion auf das Textfeld, bevor Sie es akzeptieren würde, first responder-status.Erwähnenswert ist auch Sie können erzwingen, was auch immer element, das Sie aktuell hat first responder-status zu geben, es durch Berufung
[UIView endEditing:YES]
auf jeden superview enthält die aktuellen first-responder.Vermutlich haben Sie ein weiteres element, das zu stoppen. Wollen Sie mehr wissen über euer Projekt wirklich Antwort mit dem genauen problem.
Jedoch, hier ist ein möglich haben Sie ein anderes textField, dass der Delegat-Methode
Das würde bedeuten, dass er nicht zurücktreten first responder.
textFieldShouldEndEditing = NO
wurde in andere - view-controller.Was ist schon der first responder können sich weigern, zu geben, bis die first responder-status. In diesem Fall, Ihre
UITextField
sich nicht in die first responder. So sollten Sie darauf achten, dass alles, was bereits der first responder ist nicht die Weigerung aufzugeben, die status.EDIT:
Werden Sie nicht verlassen wollen, dies in einer app an den app store übermittelt, aber hier ist etwas code, der verwendet ein eigenes API, um zu bestimmen, die aktuelle first responder:
Die Sie verwenden können, um zu sehen, was der first responder ist, und dass kann Ihnen helfen, herauszufinden, warum Sie nicht bekommen kann es zurücktreten, wenn in der Tat das problem.
nil
! Und auf der nächsten Zeile an code, die ein textField abgelehnt zu werden first responder. Ich wünschte, ich könnte in den code Schritt...Den Aufruf
canBecomeFirstResponder
nur überprüft, ob der Empfänger kann sich die first responder.Den Aufruf
becomeFirstResponder
fehl und zurückNO
wenn entweder der Empfänger kann sich nicht von first responder oder, wenn die aktuellen first-responder kann nicht zurücktreten.