J'ai obtenu le code ci-dessous de this SO question. J'essaie de faire glisser des champs de texte lorsque je commence à éditer (parce qu'ils sont couverts par le clavier de l'iPhone). Cependant, l'instruction log révèle que la méthode textFieldDidBeginEditing n'est pas appelée.textFieldDidBeginEditing: ne pas se faire appeler
J'ai le code ci-dessous dans deux sous-classes différentes de UIViewController. Dans l'un d'eux, par exemple, j'ai un textfield connecté du story-board à l'UIViewController comme celui-ci
@property (strong, nonatomic) IBOutlet UITextField *mnemonicField;
je me suis déplacé le champ de texte au sommet de la vue (non couverte par le clavier) pour que je puisse l'éditer pour essayer de déclencher l'instruction de log mais cela n'a pas fonctionné. Le champ de texte fonctionne normalement comme prévu, c'est-à-dire que les données que je saisis sont sauvegardées dans les données de base, etc.
Pouvez-vous expliquer ce que je fais de mal?
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"The did begin edit method was called");
[self animateTextField: textField up: YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField: textField up: NO];
}
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
const int movementDistance = 180; // tweak as needed
const float movementDuration = 0.3f; // tweak as needed
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
Est-ce que l'une des autres méthodes de délégation est appelée ou quand est-ce que vous définissez le délégué? – Larme
@larme Je dois définir un délégué pour que cela fonctionne? ne savait pas que – Leahcim
'textFieldDidEndEditing': est une méthode déléguée. C'est une méthode 'UITextFieldDelegate', pas une' UITextField'. – Larme