J'essaie de détecter un tremblement sur le périphérique iPhone, donc pour ce que j'ai lu, je dois définir mon contrôleur de vue en tant que premier répondeur sur la méthode viewDidAppear . Cette méthode est supposée être appelée automatiquement, mais pour une raison quelconque, cette méthode n'est jamais appelée. Seul viewDidLoad est appelé.Problème avec l'iPhone secoue: viewDidAppear n'est pas appelé lors du chargement de viewController
ceci est mon code (je mets seulement les parties pertinentes):
BuildHouseViewController.h:
@interface BuildHouseViewController: UIViewController {
BuildHouseViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
[self.view becomeFirstResponder];}
-(void)viewDidAppear:(BOOL)animated{
[self becomeFirstResponder];
[super viewDidAppear:animated];}
-(BOOL)canBecomeFirstResponder {
return YES;}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"shake");
if (event.subtype == UIEventSubtypeMotionShake)
{ }
if ([super respondsToSelector:@selector(motionEnded:withEvent:)])
[super motionEnded:motion withEvent:event];
}
J'ai ajouté des points d'arrêt sur la méthode viewDidAppear et il n'est jamais appelé. Les secousses ne sont jamais détectées, je suppose que c'est parce que comme ces méthodes ne sont jamais appelées, le contrôleur de vue ne peut jamais devenir le premier répondeur. Je ne comprends pas pourquoi cela arrive.
Toute aide sera appréciée.
Edit:
J'appelle le point de vue d'une autre vue à l'aide:
[self.view addSubview:nextScreen.view];
La vue est affiché sur l'écran
Afficher le code (ajouter à la question) où BuildHouseViewController est créé et affiché. – DyingCactus