textFieldDidBeginEditing: ne pas être appelé
J'ai obtenu le code ci-dessous à partir de cette DONC, la question. Je suis en train de glisser vers le haut textfields quand j'ai commencer à la modifier (car autrement ils couverts par l'iPhone clavier). Toutefois, l'instruction de journal révèle que le textFieldDidBeginEditing méthode n'est pas appelée.
J'ai le code ci-dessous dans deux différentes sous-classes de UIViewController. Dans l'un d'eux, par exemple, j'ai un textfield connecté à partir de la maquette à la UIViewController comme ce
@property (strong, nonatomic) IBOutlet UITextField *mnemonicField;
J'ai déplacé le champ de texte vers le haut de la vue (c'est à dire pas couverts par le clavier) pour que je puisse le modifier pour essayer de déclencher le journal de déclaration, mais il ne fonctionne pas. Le champ de texte fonctionne comme prévu c'est à dire les données que j'ai entrée est sauvés de coreData etc 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];
}
source d'informationauteur Leahcim | 2014-05-12
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas attribué de votre
delegate
deUITextField
dans votreViewController
classe:Dans votre viewcontroller.m de fichier, Dans
ViewDidLoad
méthode, faites ceci:Dans votre viewcontroller.h fichier, faites ceci:
Vous avez créé IBOutlet donc il suffit de glisser votre textfield à viewController et de l'ensemble de délégué
Puis dans .h ajouter le suivant
Vous devez mettre en place champ de texte délégué à l'autonomie.
Ajoutez cette ligne à la méthode viewDidLoad:
et n'oubliez pas d'ajouter cette ligne
<UITextFieldDelegate>
pour les rendre conformes à ce protocole.Vous pouvez obtenir le même effet en storyboard par le contrôle de la faire glisser à partir souhaité UITextField de-vue-contrôleur et sélectionnez délégué.
Dans d'autres cas, si vous cliquez sur un autre bouton, sans avoir à déplacer le focus de Uitextfield puis délégué ne sera pas appelé, pour que vous avez besoin à appeler explicitement