2010-11-16 5 views
1

Je travaille sur une fonctionnalité de bookmarking pour une application iOS lecteur de livre que j'ai. La façon dont il est configuré maintenant, l'utilisateur fait défiler une vue, et quand ils veulent enregistrer, ou mettre en signet leur place avant de partir, ils frappent un bouton de sauvegarde sur la barre d'outils inférieure.Étrange problème avec stringByEvaluatingJavaScriptFromString ne fonctionne pas avec la valeur de NSUSerDefault ... s'il vous plaît aider!

Quand ils ont frappé ce bouton de sauvegarde, l'action enregistrée est appelée:

-(IBAction) savePlace:(id)sender{ 

    int pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue]; 
    NSLog(@"%d Set Y Value", pageYOffset); 
    [[NSUserDefaults standardUserDefaults] setSavedSpot:pageYOffset]; 

} 

De façon surprenante, j'ai obtenu cette partie du travail. Je peux appuyer sur le bouton Enregistrer, la console lira 200 pour savoir où je suis à l'écran, puis quand je pars et reviendrai, 200 sera à nouveau imprimé sur la console grâce à cette méthode appelée par NSUSerDefaults quand l'application charge:

- (void) setCurrentSpot:(NSUInteger)ySpot { 

     NSLog(@"%d Saved Y Value", ySpot); 

     [webView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat: @"window.scrollTo(0, %d);", ySpot]]; 
} 

BUT! Rien ne se passe ... Je sais pertinemment que je sauvegarde et récupère correctement la valeur correcte de l'axe Y, mais lorsque cette méthode JavaScript est appelée, elle ne se déclenche pas.

Pour compliquer encore les choses, je suis allé de l'avant et fait un IBAction personnalisé qui accède que même valeur ySpot et utilisé exactement la même méthode JavaScript pour déplacer la vue à la position 200, et il fonctionne parfaitement!

Qu'est-ce qui me manque? Je ne vois pas ce qui se passe. Merci

Répondre

1

edit: mal interprété votre question,

Peut-être la méthode que vous appelez pour appeler javascript est appelé trop vite? et ne pas donner le temps à UIWebview de s'initialiser et de réagir? Si cela fonctionne quand vous attendez sur le webview de venir et appelez-le, c'est la seule chose que je pouvais voir.

+0

Hey Jesse, c'était tout! Merci beaucoup – Jerry

Questions connexes