J'ai la méthode viewDidLoad
suivante:becomeFirstResponder très lent
- (void)viewDidLoad {
NSLog(@"didLoad");
if (self.loginField.text.length > 0) [self.passwordField becomeFirstResponder];
else [self.loginField becomeFirstResponder];
}
Je voudrais également ajouter des temps de journaux dans viewWillAppear
et viewDidAppear
.
Dans certaines situations, l'animation poussée prend beaucoup de temps. J'ai mesuré l'heure avec des lignes if-else commentées (et sans) (voir: les temps sont indiqués ci-dessous). Je ne sais pas ce qui peut ralentir mon application entre viewWillAppear
et viewDidAppear
appels.
J'ai essayé d'analyser ce fragment de code avec Time Profiler (Instruments), mais cela ne montre rien. Je n'ai aucune idée de ce que je devrais faire, pour montrer ma vue plus rapidement. Des idées?
Avec becomeFirstResponder, premier appel
2014-07-11 16:51:41.090 didLoad
2014-07-11 16:51:41.133 willAppear
2014-07-11 16:51:44.223 did appear
diffAppear = 3090ms
Avec becomeFirstResponder, deuxième appel
2014-07-11 16:52:01.370 didLoad
2014-07-11 16:52:01.400 willAppear
2014-07-11 16:52:02.109 did appear
diffAppear = 709ms
Sans becomeFirstResponder, premier appel
2014-07-11 16:57:21.720 didLoad
2014-07-11 16:57:21.754 willAppear
2014-07-11 16:57:22.420 did appear
diffAppear = 666ms
Sans becomeFirstResponder, deuxième appel
2014-07-11 16:57:31.851 didLoad
2014-07-11 16:57:31.870 willAppear
2014-07-11 16:57:32.541 did appear
diffAppear = 671ms
le '-becomeFirstResponser' charge normalement les _input views_ pour l'objet réel qui prend du temps. d'autre part, vous devriez appeler cette méthode _after_ votre vue est dans la pile de navigation et dans la hiérarchie de vue correctement, ce qui signifie dans ce cas: _in_ ou _after_ la méthode '-viewDidAppear:', pas plus tôt. – holex
Mais alors le clavier n'apparaîtra pas immidietly – Szu
oui, c'est vrai, mais ce n'est pas une bonne pratique et comme vous avez vu - est extrêmement lent. – holex