Je crée un projet simple pour iPhone, en utilisant Xcode et Interface Builder. Bien que je comprenne ce qu'est un délégué, j'ai un problème avec son utilisation.délégué en tant que classe externe en Objective-C
J'ai un UITextField dans mon interface. Il affiche le clavier lorsque l'utilisateur appuie dessus, mais j'ai besoin de programmer manuellement comment cacher le clavier. Cela peut être fait en utilisant des délégués. Donc, dans IB, je prends Object à partir de la bibliothèque, en donnant son nom de classe comme Control1Delegate, puis en connectant la sortie de délégué de mon champ de texte pour être Control1Delegate. J'ai aussi des fichiers .m et .h pour cette classe Control1Delegate:
Control1Delegate.h
@interface Control1Delegate : NSObject <UITextFieldDelegate> {
}
- (BOOL) textFieldShouldReturn:(UITextField *)textField;
@end
Control1Delegate.m
#import "Control1Delegate.h"
@implementation Control1Delegate
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
@end
Mais cela ne fonctionne pas. Lors de l'exécution, il n'atteint jamais la méthode textFieldShouldReturn ou se bloque sans msg ou avec EXEC_BAD_ACCESS. La chose amusante est que quand je déplace la méthode dans le fichier du contrôleur (l'assistant a généré) et que je me connecte de UITextField à ce contrôleur (le propriétaire du fichier), tout fonctionne comme prévu. J'ai vu que la plupart des didacticiels de code de pomme mettent des méthodes déléguées dans des objets aléatoires plutôt que des classes séparées - je voudrais savoir pourquoi. Je ne peux pas avoir de délégué dans une classe séparée?
Qu'est-ce qui me manque ici? Un pointeur nul? Livecycle d'objet?
Merci beaucoup! Je savais que je frappais un objet nul, mais je n'arrivais pas à comprendre comment le conserver.Ce qui manque à cette réponse, quoique peut-être évident, c'est que vous devez connecter dans IB le point de vente délégué que vous venez de créer avec l'objet délégué que vous avez là. – rattkin